while循环输出ASCII字符

qijun1994 2011-06-30 12:29:57
遇到一个解释不了的结果
#include<iostream>
using namespace std;
main()
{
int i=0;
char ch=32;
while(ch>0)
{
cout<<(int)ch<<" "<<ch<<" ";
ch++;i++;
if(i==10)
{cout<<endl;i=1;}
}
system("pause");
}
这样输出的结果就能出现数值127对应的ASCII字符
如果改为while(ch<127)只会出现到数值等于126的
但是如果是while(ch<=127),想要输出数值等于127的,就会一直执行下去,出现乱码
不知道怎么解释,求教高手
...全文
297 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pandm 2011-06-30
  • 打赏
  • 举报
回复
如果改为while(ch<127)只会出现到数值等于126的
===========================
这不是显然的吗!



但是如果是while(ch<=127),想要输出数值等于127的,就会一直执行下去,出现乱码
===========================
当ch到了01111111(127)的时候,++ch会使得ch的最高位变成1,也就是变成10000000,这个被看做是有符号整数,它是一个负数,所以会继续满足while(ch<=127)
不再码农 2011-06-30
  • 打赏
  • 举报
回复
178不是字符型的,char范围为-128到127,字符也有无符号的,只有在IBM机器中
0~255 中的128~255之间字符也可以输出字符形式
就想叫yoko 2011-06-30
  • 打赏
  • 举报
回复
char范围是 -128到127
就想叫yoko 2011-06-30
  • 打赏
  • 举报
回复
因为 char类型最大就是127
127你再加就超出它的范围了
所以退不出循环~
MarsDavid 2011-06-30
  • 打赏
  • 举报
回复
对头 char必然<=127的
菜鸟一个 2011-06-30
  • 打赏
  • 举报
回复
只能看看了 楼上说的都对 我也赞同
afreet2006 2011-06-30
  • 打赏
  • 举报
回复
主要是 char 的取值问题
unsigned char ch=32;
while(ch<=127)
赵4老师 2011-06-30
  • 打赏
  • 举报
回复
while ((int)ch<=127)

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧