【C語言面試題】第1題:有符號變量和無符號變量的值得轉換

#include <stdio.h>

char getChar(int x,int y)
{
        char c;
        unsigned int a = x;
        (a + y > 10) ? (c = 1) : (c = 2);
        return c;
}

int main(void)
{
        char c1 = getChar(7,4);
        char c2 = getChar(7,3);
        char c3 = getChar(7,-7);
        char c4 = getChar(7,-8);
        //c1 = 1
        printf("c1 = %d\n", c1);
        //c2 = 2
        printf("c2 = %d\n", c2);
        /*c3 = 2 無符號類型和有符號類型作運算,
        * 有符號類型會隱示轉換爲無符號類型
        * -7轉換後的無符號值加上7剛好上溢出,結果是0
        */
        printf("c3 = %d\n", c3);
        /* c4 = 1
        * -8轉換後的無符號值加上7成爲一個非常大的整數(差1就會溢出)
        */
        printf("c4 = %d\n", c4);
        return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章