刚来论坛,向大佬请教下
#include<stdio.h>
int main()
{
char ch="a";
printf("%d\n",sizeof("ch"));//结果3
printf("%d\n",sizeof(ch));//结果1
printf("%d\n",sizeof(ch+ch));//结果4
printf("%d\n",sizeof(ch+ch+ch));//结果4
}
/*弄不懂为什么结果是这个,希望大佬能解答下,谢谢!结果是手机上打印的*/
首先
char ch = "a"; //这样的初始化时错误的,应该是 char ch = 'a';
ch 是 char 类型char 类型占一个字节,所以 sizeof(ch) = 1
"ch"是一个字符串常量,它在内存里的存储为'c'、'h'、‘\0' ,因此占3个字节,所以 sizeof("ch") = 3
ch+ch = 'a' + 'a' = 97+97 =194 ,194按道理来讲是可以用 char 存储的,估计编译器把这个结果
转化成了 int ,int是占4个字节的。
ch+ch+ch =194+97 =293, 293是无法用 char 来存储的,编译器把这个结果转化成了int
页:
[1]