今日遇到的易錯題
#include <stdio.h>
int i;//全局變量默認初始化是0
int main()
{i--;//-1if (i > sizeof(i)){printf(">\n");}else{printf("<\n");}return 0;
}
易錯點:sizeof的返回值類型實際為無符號整形,因此編譯器會自動將左側i自動轉換為無符號整形的數據,-1對應的無符號整形是一個非常大的數字,超過4或者8,故輸出>
#include <stdio.h>
int main()
{int arr[] = {1,2,3,4,5};short *p = (short*)arr;//short類型通常是兩個字節int i = 0;for(i=0; i<4; i++){*(p+i) = 0;//通過指針修改了arr[0]和arr[1]}for(i=0; i<5; i++){printf("%d ", arr[i]);//在統一輸出數組內容}
此題結果應為0 0 3 4 5