标题:EOF用char类型赋值为什么可行?
取消只看楼主
hanwang3
Rank: 1
等 级:新手上路
帖 子:24
专家分:7
注 册:2015-8-24
结帖率:60%
已结贴  问题点数:20 回复次数:3 
EOF用char类型赋值为什么可行?
EOF的值为-1,应该用int类型的变量去存放,但是我用char类型的变量存放也没出问题,不知道是什么情况?
2015-09-07 14:19
hanwang3
Rank: 1
等 级:新手上路
帖 子:24
专家分:7
注 册:2015-8-24
得分:0 
回复 2楼 边小白
char表示的都是正值,没有负的。
2015-09-07 14:35
hanwang3
Rank: 1
等 级:新手上路
帖 子:24
专家分:7
注 册:2015-8-24
得分:0 
回复 4楼 边小白
确实是这样,一直都有误解了。
自己编程验证了一下,char可以表示正数和负数,范围是-128~+127,负数用补码表示。
2015-09-08 10:49
hanwang3
Rank: 1
等 级:新手上路
帖 子:24
专家分:7
注 册:2015-8-24
得分:0 
回复 8楼 TonyDeng
负数赋值给unsigned char和unsigned int 应该是以补码的形式赋值,比如把-1赋给unsigned char,实际输入的值是0xff,所以以十进制输出时显示255;
您给的例子因为判别式中多了一个“=”,所以当x = 0后,x-- 等于-1,补码形式为0xffffffff,判别式判断为正,继续执行。
但是我不能理解的是,此时以十进制输出时,显示的是-1,而不是4294967295?
2015-09-08 11:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-457061-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.775615 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved