這個程式執行後會有什麼錯誤或者效果

才智咖 人氣:2.5W

#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的全域性變數,表明這個變數僅在本模組中有意義,不會影響其他模組。

他們都放在資料區,但是編譯器對他們的命名是不同的'。

TAGS:程式執行