永发信息网

C语言环境下 字符型数据赋给整形变量的有关问题

答案:2  悬赏:30  手机版
解决时间 2021-01-02 04:01
  • 提问者网友:川水往事
  • 2021-01-01 14:36

'\376'为例
①程序将变量定义为unsigned char 型将字符放到低8位中,高八位补零;00 00 00 00 11 11 11 10
②程序将变量定义为signed char型将字符放到低8位中,因为最高位为1,所以高八位补1 ;11 11 11 11 11 11 11 10
输出均为-2
第②个为-2补码,但为什么第一个也输出-2呢?
#include
void main()
{
unsigned int c;
c='\376';
printf("%d\n",c);
}

清华大学出版社 谭浩强主编 《C程序设计》第60页
最佳答案
  • 五星知识达人网友:独行浪子会拥风
  • 2021-01-01 14:45
因为第2个是补码表示!他的2进制真值是取反加1!为00000000 0010=-2
全部回答
  • 1楼网友:举杯邀酒敬孤独
  • 2021-01-01 15:22
b[0][0]=a+'0';

这样就可以了,不过这样只使用于1位数的情况,因为ascii码表里只有0-9的ascii码,它们比正常的多‘0’的值,也就是48。 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。 char str[10]={ 'i',' ','a','m',' ',‘h','a','p','p','y'}; 即把10个字符分别赋给str[0]到str[9]10个元素 如果花括号中提供的字符个数大于数组长度,则按语法错误处理;若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即 '\0' )。

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯