Compare signed and unsigned integer expression
在 compile C 程式碼的時候可能會出現這個 warning,代表什麼意思呢?
讓我們來看一個例子:
unsigned int big = 0x90909090;
int small = -1;
printf("big %c small", big > small? '>' : '<');
你猜會輸出什麼?答案是 big < small。
這是因為 small
轉成 unsigned int
之後變成 0xFFFFFFFF,而大於 0x90909090。
那如果把 big
換成 unsigned short
,small
換成 short
,結果又是如何?
unsigned short big = 0x9090;
short small = -1;
答案是 big > small。
這是因為 big
和 small
都被轉成 int
了,所以 big
仍然大於 small
。
沒有留言:
張貼留言