當前位置:商標查詢大全網 - 會計考試 - sizeof返回的值到底是什麽?

sizeof返回的值到底是什麽?

sizeof的用法是:sizeof(表達式)。

如果表達式是變量或常量,可以省略括號。否則帶括號和不帶括號的結果是不壹樣的。返回為表達式分配的字節數。

在這個例子中,s是壹個字符數組,sizeof(s)返回6,這意味著為幾個組分配了6個字節。妳的理解是正確的。

在sizeof(s+2)中,s+2的結果是壹個無符號的long long int,sizeof返回為存儲這種類型的整數而分配的字節數,在您的系統中是8。

也就是說sizeof(表達式)返回的值與表達式結果的類型有關,sizeof本身返回的值的類型是無符號long int。

例如:

假設在壹個系統上,int是4字節,long int是4字節,long long int是8字節,float是4字節,double是8字節。那麽sizeof(1)返回4,sizeof(1L)返回8,sizeof(1LL)返回8。同時,sizeof(1+2)返回4,sizeof(1.0+2)返回8,sizeof(1.0F+2)返回4。

下面是壹個綜合的例子:

# include & ltstdio.h & gt

int main()

{

int a = 1;

結構ss

{

int I;

char s[8];

} s 1;

typedef ss s;

printf("%lu ",sizeof a);

printf("%lu ",sizeof 1);

printf("%lu ",sizeof(a+1));

printf("%lu ",sizeof a+1);

printf("%lu ",sizeof(1+2));

printf("%lu ",sizeof 1+2);

printf("%lu ",sizeof(1));

printf("%lu ",sizeof s 1);

printf("%lu\n ",sizeof(s));

printf("%lu ",sizeof((short)1));

printf("%lu ",sizeof(1L));

printf("%lu ",sizeof 1LL);

printf("%lu ",sizeof 1.0);

printf("%lu ",sizeof(1.0F));

printf("%lu ",sizeof 1.0d);

printf("%lu ",sizeof(1.0+2));

printf("%lu ",sizeof(1.0F+2));

printf("%lu\n ",sizeof(1.0d+2));

返回0;

}