你好每个人都很长,我没有接触过C / C ++语言,只是再次修改这些概念,我遇到了这个问题,要求编写一个程序来显示所有的ASCII字符,我写了以下内容很好,但它没有给出预期的结果。任何人都可以告诉我这个代码有什么问题。
#include<iostrem.h>
int main()
{
unsigned char a;
for(a = 0; a < 256; ++a)
{
cout << a << " ";
}
return 0;
}
答案 0 :(得分:16)
a
总是小于256,因为无符号字符不可能高于255.你写了一个无限循环。
您的包含也有误导和额外.h
,并且您未使用std
上的cout
命名空间。
编辑:最后,从技术上讲,ASCII只计算前128个字符,除此之外的所有字符都是各种扩展字符集的域。
答案 1 :(得分:6)
如果您可以使用<stdio.h>
,则会更容易。
#include <stdio.h>
int main()
{
for(int i = 0; i <= 255; i++) {
fprintf(stdout, "[%d]: %c\n", i, i);
}
return 0;
}
答案 2 :(得分:4)
其他答案很好地涵盖了这一点。我只是觉得我会投入,在打印它们之前检查字符是否可打印可能是好的:
#include <cctype>
#include <iostream>
int main()
{
for(int a = 0; a < 256; ++a) // use int (big enough for 256)
if(std::isprint(a)) // check if printable
std::cout << char(a) << " "; // print it as a char
}
答案 3 :(得分:3)
试试这段代码:
=&GT; C ++
#include<iostream>
int main ()
{
int a;
for(a=0;a<256;++a)
{
cout<<(char)a<<" ";
}
return 0;
}
=&以及c
#include<stdio.h>
int main ()
{
int a;
for(a=0;a<256;++a)
{
printf("%c " a);
}
return 0;
}
答案 4 :(得分:0)
您的代码存在很多问题。
首先没有iostrem.h
。将此更正为iostream.h
g ++后,会fatal error: iostream.h: No such file or directory
,因为standard libraries must not be included with .h
将其更改为#include <iostream>
会产生error: 'cout' was not declared in this scope
。您需要std::cout << a
才能使其成功编译。
但即使在解决了上述所有问题之后,gcc也会使用-Wall -Wextra -pedantic
选项输出一个重要的事情
warning: comparison is always true due to limited range of data type
那是因为256超出了unsigned char
的典型范围。它只适用于char超过8位的情况,这与您的平台不同。您应该始终启用所有编译器警告。这将帮助您识别许多问题而无需在此处提问。
尽管如此,除非非常必要,否则不要使用小于int
的类型作为临时值,因为无论如何它们都会在表达式中被提升为int
。
答案 5 :(得分:0)
它有效。
#include <iostream>
using namespace std;
int main() {
char a;
int i;
for (int i=0; i<256; i++){
a=i;
cout << i << " " << a << " " <<endl;
}
return 0;
}
答案 6 :(得分:0)
这显然是一个非常古老的问题,但如果有人想要实际打印ASCII码及其相应的数字:
#include <iostream>
int main()
{
char a;
for (a=0; a<=127; a++)
{
std::cout<<a<<" ";
std::cout<<int(a)<<" "<<std::endl;
}
return 0;
}
NB /读者:
代码0-31:不可打印的字符;用于格式化和控制打印机
代码32-127:可打印的字符;代表字母,数字和标点。
答案 7 :(得分:-1)
#include <stdio.h>
int main ()
{
unsigned char a;
for(a=0;a<=255;a++)
{
printf(" %c %d \n ",a,a);
}
getch();
return 0;
}
答案 8 :(得分:-1)
你得到了什么结果?我认为你需要输出
Cout<<(chat)a;
否则它只会返回它指定的整数