在C/C++ 中,sizeof 运算符是计算变量或数据类型的大小的。通常int类型占4个字节,char占1个字节。
想必你在学习的C的动态内存分配过程中,一定见过或写过类似的:
int * pointer = malloc(10 * sizeof(int));
不知道刚开始,你有没有跟我一样的想法,就是既然sieof(int )占4个字节,那为什么不直接写40,而要再让计算机去计算呢?后面,查资料才知晓,原来这是为了可移植性做的考虑。尽管32位系统上的大多数C和C ++实现都将int类型定义为四个八位字节,但是当代码移植到不同的系统时,此大小可能会发生变化,从而破坏了代码。
接下来就简单看下sizeof 这个运算符(嗯嗯,确实很简单)
#includeint main()
{
int a ;
a = 6;
printf("sizeof int value is :%d\n",sizeof(int));
printf("sizeof int value is :%d\n",sizeof(a++));
printf("the variable of a's values is :%d\n",a);
printf("sizeof doublel value is :%d\n",sizeof(double));
printf("the value of sizeof(a + 1.0) is :%d\n",sizeof(a + 1.0));
return 0;
}
编译环境是:centos 7
gcc 版本:gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)
运行结果如下 :
[zhang@bogon C]$ ./sizeof
sizeof int value is :4
sizeof int value is :4
the variable of a's values is :6
sizeof doublel value is :8
the value of sizeof(a + 1.0) is :8
从运行结果可以看出,sizeof(a++) 是没有执行的,查资料说,sizeof是静态运算符,它的运行结果在编译时刻就决定了,所以不要在有类似的瞎操作,在sizeof 的括号里做运算,这些运算不会做的。