为什么c2输出的会是大写B啊?
#include "pch.h"#include"stdio.h"
int main()
{
int b = 322;
char c2;
c2 = b;
printf("%d,%c",b, c2);
}
输出322,B,可是c2不是等于322吗,ASCII表里面没有322对应B啊,哪里不对呢
本帖最后由 ba21 于 2019-1-13 23:51 编辑
估计你也没有学过汇编。
讲你听得懂的就是 c2 = b; 把大数转成了小数。
如果你硬是想知道了个究竟,那就先去学汇编吧。
又或者,运行下面代码,自己理解下。
#include"stdio.h"
int main()
{
int b = 322;
char c2;
c2 = b;
printf("%d,%d\n",b, c2);
} 本帖最后由 sunrise085 于 2019-1-13 23:58 编辑
这个是变量占位问题。char是一个字节,int是两个字节(或四个字节)。322的十六进制是142H,先存储低位即42H,把b赋给c2的时候,实际上c2的值是42H,而42H对应的ASCII码表中就是'B',因此输出就是B了。
至于多字节变量的存储问题,是大端小端的问题,你需要多学习一些汇编的知识,这里就不多说了。
sunrise085 发表于 2019-1-13 23:56
这个是变量占位问题。char是一个字节,int是两个字节(或四个字节)。322的十六进制是142H,先存储低位即42 ...
谢谢{:9_236:} ba21 发表于 2019-1-13 23:49
估计你也没有学过汇编。
讲你听得懂的就是 c2 = b; 把大数转成了小数。
谢谢,会去学的
页:
[1]