#define MAX 255
int main()
{
unsigned char A[MAX],i;//i被定義為unsigned char
for (i=0;i<=MAX;i++)
A[i]=i;
}
解答:無窮迴圈加陣列越界訪問(C/C++不進行陣列越界檢查)
MAX=255
陣列A的下標範圍為:-1,這是其一..
其二.當i迴圈到255時,迴圈內執行:
A[255]=255;
這句本身沒有問題..但是返回for (i=0;i<=MAX;i++)語句時,
由於unsigned char的取值範圍在(0..255),i++以後i又為0了..無限迴圈下去.
struct name1{
char str;1 short x;2
int num;
}
struct name2{
char str;0
int num;4
short x;6
}
sizeof(struct name1)=8,sizeof(struct name2)=12
在第二個結構中,為保證num按四個位元組對齊,char後必須留出3位元組的空間;同時為保證整個結構的自然對齊(這裡是4位元組對齊),在x後還要補齊2個位元組,這樣就是12位元組。
intel:
A.c 和B.c兩個c檔案中使用了兩個相同名字的static變數,編譯的時候會不會有問題?這兩個static變數會儲存到哪裡(棧還是堆或者其他的)?
static的全域性變數,表明這個變數僅在本模組中有意義,不會影響其他模組。
他們都放在資料區,但是編譯器對他們的命名是不同的'。