在C / C ++中打印所有ASCII值

时间:2014-11-21 05:00:13

标签: c++ c

你好每个人都很长,我没有接触过C / C ++语言,只是再次修改这些概念,我遇到了这个问题,要求编写一个程序来显示所有的ASCII字符,我写了以下内容很好,但它没有给出预期的结果。任何人都可以告诉我这个代码有什么问题。

#include<iostrem.h>
int main()
{
    unsigned char a;
    for(a = 0; a < 256; ++a)
    {
        cout << a << " ";
    }
    return 0;
} 

9 个答案:

答案 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;

否则它只会返回它指定的整数