C语言下 int转char遇到的问题

如题所述

第1个回答  2019-11-14
同意一楼的说法
例如
int
a=90;
(char)a是等于Z,就是ASCII码为90所代表的字符而不是字符型的90
对不起后面的是我失误了,如果想这样赋值的话好像只能使用‘0’+i的方法,如果直接赋ip[10]=i
的话,仍然是把i代表数字的ASCII码赋给ip[10],跟ip[10]=(char)i的功能是一样的
而如果以%c打印i的话才是0,1,2,3
再次抱歉
第2个回答  2020-01-18
a是一个四字节整数,对a赋值为'48'相当于对a的最后一个字节赋值为‘8’=56,倒数第二个字节赋值为‘4’=52.因此a=52*256+56=13368,printf("%c",a);相当于printf("%c",char(a%256));
第3个回答  2019-06-13
一楼是对的.
我把我的答案撤了吧.
不是版本的问题,一楼的回答是正确的.
直接赋值:ip[10]=i;
i=0,为int型,对应ASCII码为0的字符,即空格.
另外两个输出也是这个道理.
第4个回答  2019-09-01
我在Linux和Windows下面编译均没有错误:
我不觉得不可见字符就可以提示编译错误,难不成强制类型转换都非法?
gcc
(GCC)
3.2.2
20030222
(Red
Hat
Linux
3.2.2-5)
vc
6.0+sp6
(Windows
Vista
Home)
相似回答