C語言面試題目:把int 直接賦值給char 例如char c = 10;


面試題:把整數賦值給一個char  結果是什么?

例如

#include <stdio.h>

int main() {
    int i = 0;
    char a[10];
    for (i = 0; i < 10; i++) {
        a[i] = i;
        printf("i:%d    a[%d]:%c    a[%d]:%d\n", i, i, a[i], i, a[i]);   
    }

    return 0;
}

求輸出結果

結果如下

 

結果及說明:

此處為截斷賦值  把整數i的前3位去掉  直接后8位賦值給char    查看ASCII表 對照十進制的1-9   如下:

所以才會得到如上的結果

 

下面繼續測試:

如上 e = 385  截取后面的就剩下1000 0001 賦值給char   於是1000 0001最高位是負數,負數是用補碼存儲的    -127的補碼正是1000 0001  所以值為-127

而看ASCII表最后   所以%c 輸出為亂碼

 

繼續測試及結果如下

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM