- 相關(guān)推薦
這個(gè)程序執行后會(huì )有什么錯誤或者效果
#define MAX 255
int main()
{
unsigned char A[MAX],i;//i被定義為unsigned char
for (i=0;i<=MAX;i++)
A[i]=i;
}
解答:死循環(huán)加數組越界訪(fǎng)問(wèn)(C/C++不進(jìn)行數組越界檢查)
MAX=255
數組A的下標范圍為:0..MAX-1,這是其一..
其二.當i循環(huán)到255時(shí),循環(huán)內執行:
A[255]=255;
這句本身沒(méi)有問(wèn)題..但是返回for (i=0;i<=MAX;i++)語(yǔ)句時(shí),
由于unsigned char的取值范圍在(0..255),i++以后i又為0了..無(wú)限循環(huán)下去.
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
在第二個(gè)結構中,為保證num按四個(gè)字節對齊,char后必須留出3字節的空間;同時(shí)為保證整個(gè)結構的自然對齊(這里是4字節對齊),在x后還要補齊2個(gè)字節,這樣就是12字節。
intel:
A.c 和B.c兩個(gè)c文件中使用了兩個(gè)相同名字的static變量,編譯的時(shí)候會(huì )不會(huì )有問(wèn)題?這兩個(gè)static變量會(huì )保存到哪里(棧還是堆或者其他的)?
static的全局變量,表明這個(gè)變量?jì)H在本模塊中有意義,不會(huì )影響其他模塊。
他們都放在數據區,但是編譯器對他們的命名是不同的。
如果要使變量在其他模塊也有意義的話(huà),需要使用extern關(guān)鍵字。
struct s1
{
int i: 8;
int j: 4;
int a: 3;
double b;
};
struct s2
{
int i: 8;
int j: 4;
double b;
int a:3;
};
printf(“sizeof(s1)= %d\n”, sizeof(s1));
printf(“sizeof(s2)= %d\n”, sizeof(s2));
result: 16, 24
第一個(gè)struct s1
{
int i: 8;
int j: 4;
int a: 3;
double b;
};
理論上是這樣的,首先是i在相對0的位置,占8位一個(gè)字節,然后,j就在相對一個(gè)字節的位置,由于一個(gè)位置的字節數是4位的倍數,因此不用對齊,就放在那里了,然后是a,要在3位的倍數關(guān)系的位置上,因此要移一位,在15位的位置上放下,目前總共是18位,折算過(guò)來(lái)是2字節2位的樣子,由于double是 8字節的,因此要在相對0要是8個(gè)字節的位置上放下,因此從18位開(kāi)始到8個(gè)字節之間的位置被忽略,直接放在8字節的位置了,因此,總共是16字節。
第二個(gè)最后會(huì )對照是不是結構體內最大數據的倍數,不是的話(huà),會(huì )補成是最大數據的倍數
【這個(gè)程序執行后會(huì )有什么錯誤或者效果】相關(guān)文章:
戰略執行力對執行效果的影響研究論文提綱03-28
為什么會(huì )有閏月08-31
執行監督權在執行程序中的適用12-20
HR請問(wèn)武漢面試后的通知具體什么時(shí)候會(huì )有消息?11-19
股權執行中法律程序的應用03-14
紋唇會(huì )有什么壞處08-17
什么面霜補水效果好01-09
終結執行程序申請書(shū)09-28
利用Excel執行審計分析程序03-22
淺論執行股權中法律程序的應用03-18