CMU-15213(計算機作業系統總結) - 資料型別雜談
阿新 • • 發佈:2021-01-27
技術標籤:CMU-15213(計算機作業系統總結系列)c++c語言
CMU-15213(計算機作業系統總結) - 資料型別雜談 in C
int型別和unsigned int(也可以簡寫為unsigned)
(int) 2147483647> (int) -2147483648會返回什麼?
#include <stdio.h> int main() { int x = 2147483647; int y = -2147483648; printf("x > y -> %u\n", x > y); return 0; }
答案是:1
x > y -> 1
(int) 2147483647> (unsigned int) -2147483648會返回什麼?
#include <stdio.h>
int main()
{
int x = 2147483647;
unsigned int y = -2147483648;
printf("x > y -> %u\n", x > y);
return 0;
}
答案是:0
x > y -> 0
這個原因是當比較兩個變數是,如果其中一個是unsigned型別,那麼這個比較也會把int型別轉換成unsigned來做對比
signed | 2147483647 | -2147483648 |
binary | 01111111 11111111 11111111 11111111 | 10000000 00000000 00000000 00000000 |
unsigned | 2147483647 | 2147483648 |
所以當-2147483648轉換成unsigned它變成了2147483648,這也就是為什麼(int)2147483647>(unsigned)-2147483648返回0(FALSE)
(未完待續...)