| 
 | 
 
 
发表于 2020-11-9 11:56:07
From FishC Mobile
|
显示全部楼层
|阅读模式
 
 
 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 
#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 
 
 
 |   
 
 
 
 |