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