sizeof是操作符,是操作符!!!

       在C语言学习中,我们常常会将sizeof当作一个函数。因为通常在使用时,sizeof后面要加括号,然而虽然很难接受但铁打的事实就是它是一个 关 键 字

       简单的做个实验来证明下:

int main()
{
	int a = 0;

	printf("test 1 :%d\n", sizeof(int));
	printf("test 2 :%d\n", sizeof(a));
	printf("test 3 :%d\n",sizeof a);
	
	return 0;
}

       在VS 32位系统下,可以完美地运行,其运行结果:

sizeof是操作符,是操作符!!!_第1张图片

      而我们也知道,sizeof 的功能就是 计算对象所占内存空间的大小。32位系统下, int 占4字节, a又是整型变量,所以也占4字节。

      可能有人会有疑问" sizeof(int) "可以运行,为什么" sizeof int "又不可以呢?                                                                                                            这里我们要明白,万事都有其存在意义。                                                                                                                                                         像是 unsigned + 类型   // 表示无符号数                                                                                                                                                                      static + 类型        // 表示静态变量                                                                                                                                                                     。。。。而再看 sizeof + 类型 想要表示什么意义呢?想要声明什么样的类型变量? 类型扩展吗? 所以这么思考就明白它是                                       错误的表示。

     所以在计算变量空间大小时可以省略括号,而在计算类型时大小不能省略。不过在一般情况建议写着,防止出错。

     除此之外,使用sizeof还要注意,由于它是在编译时求值,所以sizeof操作符内可以当作常量表达式

     也可以自行验证:

int main()
{
	int a = 0;
	printf("test 1 :%d\n", sizeof(a = 5));
	printf("test 2 :%d\n", a);
	
	return 0;
}

sizeof是操作符,是操作符!!!_第2张图片       

 

 

 

 

 

 

你可能感兴趣的:(C)