我想知道在ar [i]!= -1的第9行会发生什么。结果是循环不停止,但我不知道为什么。将无符号字符与一个负数进行比较
4 int main()
5 {
6 unsigned char ar[] = {1, 2, 3, 4, 5, -1};
7 int i;
8
9 for (i = 0; ar[i] != -1; i++)
10 {
11 printf("ar: %u\n", ar[i]);
12 }
13 printf("out: %u\n", ar[i]);
14
15 return 0;
16
17 }
感谢,
“UCHAR_MAX”和“INT_MAX”的值是什么? – EOF
如果您使用GCC并已启用警告,它应该警告您有关签名和无符号比较。无论如何,无符号数字不能存储负数。 –
'unsigned char'是无符号的,因此永远不等于'-1'。 –