1. 程式人生 > 其它 >CMU-15213(計算機作業系統總結) - 資料型別雜談

CMU-15213(計算機作業系統總結) - 資料型別雜談

技術標籤: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來做對比

signed2147483647-2147483648
binary01111111 11111111 11111111 1111111110000000 00000000 00000000 00000000
unsigned21474836472147483648

所以當-2147483648轉換成unsigned它變成了2147483648,這也就是為什麼(int)2147483647>(unsigned)-2147483648返回0(FALSE)

(未完待續...)