C语言中 向整型变量赋予字符可以吗

在VC++6.0上,代码如下:
int a;
a='a';
printf("%d",a);
运行不会报错,但是可以这样赋值吗?

语法上没错,但是现实就又问题了,在字符变量的储存方式是二进制数字,二级制数字储存在物理内存中,在用的时候先调出这个数字,再由系统对应找到那个字符两,但是你现在把字符量给整形变量,又用整形显示,那显示的结果一定是个数字,而不是字符,而且这个数字是ASCII对应的数字,所以,你的运行结果一定是97追问

运行结果我理解,就是不知道这样子写虽然说可以执行,但是会不会对内存什么造成影响之类的?

追答

不对对内存造成任何影响,这样,你再最后再加个语句,就可以证明了,加个printf(“%c”,a);
这样,下面这个会显示还是字符,就证明内存中的数据没有收到影响。你可以试试看

还有,满意记得采纳哦

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-09-25
可以的,字符是以ASCII方式存储的。将一个字符赋值给整形变量,相当于将这个字符的ASCII值赋值给该变量,只是将1个字节的ASCII值赋值给4个字节的整形变量,要进行符号扩展,值还是该字符的ASCII值。
第2个回答  2014-09-25
可以,赋值后a = 0x61,输出结果是97
第3个回答  2014-09-25
会把对应字符的ASCII赋值过去,'a'的ASCII是97,最后就是97