以下C代碼的輸出是什麼。假設它運行在Little endian機器上,short int需要2個字節,而char需要1個字節。輸出以下C代碼
#include<stdio.h>
int main() {
short int c[5];
int i = 0;
for(i = 0; i < 5; i++)
c[i] = 400 + i;
char *b = (char *)c;
printf("%d", *(b+8));
return 0;
}
在我的機器上它給
-108
我不知道,如果我的機器是小端或大端。我發現某處它應該給出
148
作爲輸出。因爲404的低8位(即元素c [4])是148,但我認爲由於「%d」,它應該從c [4]的地址開始讀取2字節的內存。
編譯標誌可以將默認字符更改爲有符號/無符號等 –