我只是一个很棒的编程难题。为什么一样?
#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。它可以是用于比较有符号和无符号类型的标准。我不知道......
答案 0 :(得分:2)
在signed char
和unsigned int
之间的tiff中,unsigned int
获胜!
就像这样
此处-1
将转换为unsigned int
ULONG_MAX
,因此if()
条件为真。
在C中,尺寸确实很重要。变量总是转换为其中的最大尺寸。
答案 1 :(得分:1)
很多年前,我学到了很多东西。其中一个是比较类型。
如果char
的值大于unsigned int
,我会将unsigned int
投放到sizeof char
。如果要将unsigned int
的值限制为sizeof char
,则转向另一种方式。通过这种方式,您告诉编译器如何比较这些值,它也将有助于维护者。