比较两个变量

时间:2012-05-02 18:08:23

标签: c

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

#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。它可以是用于比较有符号和无符号类型的标准。我不知道......

2 个答案:

答案 0 :(得分:2)

signed charunsigned int之间的tiff中,unsigned int获胜!

就像这样

Size does matter

此处-1将转换为unsigned int ULONG_MAX,因此if()条件为真。

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

答案 1 :(得分:1)

很多年前,我学到了很多东西。其中一个是比较类型。

如果char的值大于unsigned int,我会将unsigned int投放到sizeof char。如果要将unsigned int的值限制为sizeof char,则转向另一种方式。通过这种方式,您告诉编译器如何比较这些值,它也将有助于维护者。