1.sizeof操作符
求数据类型的长度用的是sizeof操作符,sizeof操作符后面跟的可以是类型,也可以是表达式,如果跟的是类型则后面要加括号,是表达式的时候则不需要加。
sizeof(类型)
sizeof(表达式)
2.sizeof返回值
sizeof 运算符的返回值,C 语言只规定是无符号整数,并没有规定具体的类型,而是留给系统自己去决定, sizeof 到底返回什么类型。不同的系统中,返回值的类型有可能是 unsigned int ,也有可能是 unsigned long ,甚至是 unsigned long long ,对应的 printf() 占位符分别是 %u 、 %lu 和 %llu 。这样不利于程序的可移植性。
C 语言提供了⼀个解决方法,创造了⼀个类型别名 size_t ,用来统一表示 sizeof 的返回值类型。对应当前系统的 sizeof 的返回值类型,可能是 unsigned int ,也可能是 unsigned long long 。
3.sizeof用“%zd”打印
#include <stdio.h>
int main()
{
printf("%zd\n", sizeof(char)); //1
printf("%zd\n", sizeof(bool)); //1
printf("%zd\n", sizeof(short)); //2
printf("%zd\n", sizeof(int)); //4
printf("%zd\n", sizeof(long)); //4
printf("%zd\n", sizeof(long long)); //8
printf("%zd\n", sizeof(float)); //4
printf("%zd\n", sizeof(double)); //8
printf("%zd\n", sizeof(long double));//8
return 0;
}
4.sizeof在表达式中不计算
#include <stdio.h>
int main()
{
short s = 2;
int b = 10;
printf("%d\n", sizeof(s = b + 1));
printf("s = %d\n", s);
return 0;
}
输出结果均为2
sizeof 在代码进行编译的时候,就根据表达式的类型确定了,类型的常用,而表达式的执行却要在 程序运行期间才能执行,在编译期间已经将sizeof处理掉了,所以在运行期间就不会执行表达式了。
本文介绍了C语言中sizeof操作符的工作原理,包括用于求数据类型长度,返回值的不确定性以及在表达式中的行为。通过创建类型别名size_t统一返回值类型,提高程序的可移植性。sizeof在编译时根据表达式类型确定,运行时不执行表达式内容。
3994

被折叠的 条评论
为什么被折叠?



