我想知道在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'。 –