printf("%d",sizeof('u'));和printf("%d",sizeof(''));是什么意思,他们的结果是什么,请帮忙分析一下?
发布网友
发布时间:2022-04-23 05:55
我来回答
共3个回答
热心网友
时间:2023-10-17 15:29
printf("%d",sizeof('u'));输出的值为1.因为'u'是一个字符类型,sizeof(字符)就等于1.
这就等价于 char a='u';printf("%d",sizeof(a));结果都是1.
printf("%d",sizeof(''));是错误的表达,empty character constant。sizeof('')在sizeof中没有标明具体的类型,会报错。
另外
printf("%d\n",sizeof(int)); //4
printf("%d\n",sizeof(char)); //1
printf("%d\n",sizeof(float)); //4
printf("%d\n",sizeof(doulbe)); //8
热心网友
时间:2023-10-17 15:29
可能是写程序的软件不一样的 所以结果不同
热心网友
时间:2023-10-17 15:30
printf("%d",sizeof('u'));按目前32位机来讲,结果应该是4,如果不去先声明一个字符型的变量来装这个'u',那么你直接查看'u'在内存的存储空间大小时,其实计算机是按一个基本寻址单位来存放这个'u'的,32位机的寻址单位为4byte
printf("%d",sizeof(''));这个会报错,如果你想表示空字符,在''中间应该有个空格,像' ',所以它的结果应该也是4.
另外我再给你讲一些特殊的:
printf("%d",sizeof(2));结果是4,因为2是一个整型常量,所以用int来存储
printf("%d",sizeof(2233333333));结果是8,因为2233333333已经超过了int的表示范围,所以系统知道这是一个long long类型
printf("%d",sizeof("2"));结果是2,"2"是一个只有一个字符的字符串,那为什么结果是2呢,因为在字符串,结尾默认是有一个空字符\0,所以字符串的字符个数要默认+1,所以字符串的内存空间是字符个数+1byte
printf("%d",sizeof(void));结果是1,因为void本身就表示系统已经声明好的空字符,所以为1