#includeint main() { union test{ char a[10]; int b; }u; int *p = (int *)&(u.a[1]); // 沒有引起總線錯誤 *p = 17; printf("%d\n",*p); #if 0 int *q = 0; // 引起段錯誤,在linux中運行可看到段錯誤,在windows下運行時直接出錯 *q = 1; #endif /* 測試 */ printf("%d\n", sizeof 'A'); // 輸出為4(或者你機器上int的長度) // 因為發生了類型提升,char 變 int char c1 = 'a',c2 ='b'; char c3 = c1 + c2; // 溢出,後值為 97+98-256 = -61 printf("%d %d %d\n",c1,c2,c3); return 0; }