Ⅰ 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*)函数求的是字符串的实际长度,直到遇到第一个'