C语言中的int char 的区别

这是一个进行字符转换的程序测试,想知道为什么测试通不过,还有char和int的区别

char是有符号数,表示范围是-128~127,不是你想的0~255哈。所以你把%256的结果赋值给它,大于等于128的情况下全成负值了。想要无符号的就是 unsigned char
而赋值给int就不会了。 int至少有2字节。典型的是4字节。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-04
int 是整形变量的声明关键字 长度为4个字节
char 只能储存一个字符 长度为1个字节
你说char y换成int y 不行,那你就试试换成int y后 后面用y时加上强制转换
-------
你图没截完吧 inBuf 、totleLine的声明都没有。不知道这些数据。也不知道你到底想干什么
第2个回答  2013-03-04
不清楚你所指的测试是什么,但是int和char的区别主要是类型长度。
在32位系统中,一般int占4个字节,char占1个字节。
我估计你是代码扫描程序报错吧,在inBuf[i][j]=y;这句话中如果inBuf是char型,y是int型,那这个赋值就是有问题的,这里会进行隐式类型转换将int转换成char,有可能会丢失高位数据。追问

y已经是对256取余数了,不会有丢失高位的现象啊

第3个回答  2013-03-04
char只有一个字节,int有4个字节,能表示的内容大小不一样
char只有0~255,int范围[-2^31 , 2^31 -1] ,要是处理器是64位的可以更大

你这里inBuf是什么类型的追问

上面的y已经是对256取余完成的了,也就是说y<=255,所以char 应该是可以存下的啊

第4个回答  2019-10-18
假设用32位操作系统
int开设个变量存储整型数据,数据占用4字节
char开设变量存储字符型数据,数据占用1字节
int
*开设指针型变量,指针占用4字节,指向的是个4字节的整型数据
char
*开设指针型变量,指针占用4字节,指向的是个1字节的字符型数据
相似回答