Ⅰ sizeof返回的值到底是什麼
sizeof的用法是:sizeof(表達式)。
如果表達式是一個變數或常量,可以省略括弧。否則,有括弧、無括弧的結果是不同的。作用是返回為表達式分配的位元組數。
在本例中,s是字元數組,sizeof(s)返回6,說明為數組分配了6位元組,你的理解是對的。
而在sizeof(s+2)中,s+2的結果是一個unsigned long long int類型的整數,sizeof返回的是為存儲這種類型的整數需分配的位元組數,在你的系統上,它就是8。
也就是說,sizeof(表達式)返回的值與表達式的結果的類型有關,另外喚歲sizeof返回的值本身的類型是unsigned 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 <stdio.h>
int main()
{
int a=1;
struct ss
{
int i;
char s[8];
}s1;
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 s1);
printf("%lu ",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 ",sizeof(1.0d+2));
return 0;
}
Ⅱ c++中的sizeof是什麼意思
sizeof()是C/C++中的一個操作符,其作用就是返廳沖回一個對象或者類型所佔的內皮毀存位元組數。
MSDN上的解釋為:
The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type(including aggregate types). This keyword returns a value of type size_t.
其返回值類型為size_t,在頭文件stddef.h中定義。這是一個依賴於編譯系統的值,一般定義為
typedefunsignedintsize_t;
在C99及以上標准中,sizeof(char)、sizeof(int)、sizeof(long)、sizeof(long long)、sizeof(float)、sizeof(double)、sizeof(long double)的值分別是1,4,4,8,4,8,16。
拓展資料:sizeof與strlen區別
strlen(char*)函數求的是字元串的實際長度,直到遇到第一個'