| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1348 人关注过本帖
标题:大佬们这个怎么解决?
只看楼主 加入收藏
xxnff
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2020-9-23
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
大佬们这个怎么解决?
如下欲输出ASCII编码及对应的字符,但程序中出现了“永真循环”(俗称“死循环”)。请指出原因,并修改(请给出至少2种修改方案)。

 // ASCII.cpp
#include <iostream>
using namespace std;

int main()           // 为什么出现永真循环? 如何修改?
{
    unsigned  char c;
    for(c=0;  c<256; c++)
        cout << int(c) << '\t' << c << endl;
                     // 表达式int(c)为将c的值临时强制转换成指定的int类型
    return  0;
}
搜索更多相关主题的帖子: 修改 永真循环 出现 ASCII int 
2020-09-23 23:34
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:541
专家分:1178
注 册:2016-9-17
收藏
得分:7 
把int 换成unsigned int 试试;
cout << int(c) << '\t' << c << endl;

话说c++ 的代码必须这样写吗
就不能写成
cout << int(c);
cout << '\t' ;
cout << c ;
cout << endl;
这样吗 ,讲道理我还真没写过c++  哈哈
还是printf(“%u,%c/n”,uint(c),c);这样比较好看

[此贴子已经被作者于2020-9-24 16:18编辑过]


穷举是最暴力的美学
2020-09-24 16:10
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:7 
unsigned  char 常见实现是8bit
最大值 255
(unsigned  char)255 + 1是0
所以 c<256 永远成立
所以 死循环

修改就简单了
换类型/强制转换/循环到254 单独输出 255/只处理到128

https://zh.
2020-09-24 16:20
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9032
专家分:54066
注 册:2011-1-18
收藏
得分:7 
在C论坛,贴的却是C++代码,那么别人应该用C代码回复你,还是用C++代码回复你?

程序代码:
#include <stdio.h>
#include <locale.h>
#include <ctype.h>
#include <limits.h>

int main( void )
{
    setlocale( LC_CTYPE, "C" ); // 没有这一句的话,输出可能也是正确的,但未必一定是正确的

    for( int ch=0; ch<=UCHAR_MAX; ++ch ) // unsigned char 的最大值未必是255
    {
        if( isprint(ch) ) // 控制字符的行为依赖于平台实现
            printf( "value=0x%02hhX, graph=\'%c\'\n", ch, ch );
        else
            printf( "value=0x%02hhX\n", ch );
    }
}
2020-09-24 17:02
快速回复:大佬们这个怎么解决?
数据加载中...
 
   



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

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