0

我只是一个很棒的编程难题。为什么要一样?

#include <stdio.h>
#include <limits.h>

int main(int argc, char *argv[])
{
  unsigned int x = ULONG_MAX;
  char y = -1;   
  if (x == y) printf("That is same.");  

  return 0;
}

我认为 unsigned int 被转换为signed char,因此它将是-1。它可能是比较有符号和无符号类型的标准。我不知道...

4

2 回答 2

2

signed char在和之间的争吵中unsigned intunsigned int获胜!

就像这样

大小很重要

这里-1将转换为unsigned intwhich is ULONG_MAX,因此if()条件为真。

在 C 中,大小确实很重要。变量总是转换为其中最大的大小。

于 2012-05-02T18:12:15.127 回答
1

许多年前,我学到了一些东西。其中之一是比较相似的类型。

如果' 的值大于 ,我要么将其char转换为。或者,如果's 的值被限制为 a ,则以另一种方式转换。这样,您就可以告诉编译器您是如何比较这些值的,这也将有助于维护人员。unsigned intunsigned intsizeof charunsigned intsizeof char

于 2012-05-02T18:16:59.123 回答