C语言—sizeof()

作者:追风剑情 发布于:2019-7-10 20:46 分类:C

示例


#include <stdio.h>
int main(void)
{
	//最初K&R给出的关键字
	int int_size = sizeof(int);
	int short_size = sizeof(short);
	int long_size = sizeof(long);
	int unsigned_size = sizeof(unsigned);
	int char_size = sizeof(char);
	int float_size = sizeof(float);
	int double_size = sizeof(double);

	//C90标准添加的关键字
	int signed_size = sizeof(signed);
	//void

	//C99标准添加的关键字
	int bool_size = sizeof(_Bool);//布尔值
	//int complex_size = sizeof(_Complex);//复数
	//int imaginary_size = sizeof(_Imaginary);//虚数

	//long、short、unsigned、signed用来修饰int
	signed short int ss_int = 0;
	unsigned short int us_int = 0;
	signed long int sl_int = 0;
	unsigned long int ul_int = 0;
	long long int ll_int = 0;
	long double ld_int = 0;
	//......

	//打印每种数据类型所占字节数
	printf("--------sizeof------\n");
	printf("sizeof(int) \t %d \n", int_size);
	printf("sizeof(short) \t %d \n", short_size);
	printf("sizeof(long) \t %d \n", long_size);
	printf("sizeof(unsigned) \t %d \n", unsigned_size);
	printf("sizeof(char) \t %d \n", char_size);
	printf("sizeof(float) \t %d \n", float_size);
	printf("sizeof(double) \t %d \n", double_size);
	printf("sizeof(signed) \t %d \n", signed_size);
	printf("sizeof(_Bool) \t %d \n", bool_size);

	char ch = 'A';
	//类型必须写在括号里
	printf("%u", sizeof(char));
	//变量可以不写在括号里
	printf("%u", sizeof ch);
	printf("%u", sizeof(ch));

	getchar();
}


运行测试

111111.png

注意 类型可移植性

       sizeof运算符以字节为单位返回类型或值的大小。这应该是某形式的整数,但是标准只规定了该值是无符号整数。在不同的实现中,它可以是unsigned int、unsigned long甚至是unsigned long long。因此,如果要用printf()函数显示sizeof表达式,根据不同系统,可能使用%u、%lu或%llu。这意味着要查找你当前系统的用法,如果把程序移植到不同的系统还要进行修改。鉴于此,C提供了可移植性更好的类型。首先,stddef.h头文件(在包含stdio.h头文件时已包含其中)把size_t定义成系统使用sizeof返回的类型,这被称为底层类型(underlying type)。其次,printf()使用z修饰符表示打印相应的类型。同样,C还定义了ptrdiff_t类型和t修饰符来表示系统使用的两个地址差值的底层有符号整数类型。

标签: C语言

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号