为什么整数不能在C中转换为ASCII?

use*_*420 2 c int ascii casting char

我有一段代码,它通过我认为是ASCII的前256个字符,输出字符,并在文本文件中输出该字符串的出现次数.令人好奇的是它输出的字符与在线的任何ASCII表都不对应.第一个字符(i = 0)是空的,但第二个和第三个字符是笑脸,然后是心形,钻石,俱乐部和铁锹.更奇怪的是,当我检查字母表((char)65 ='A',...)时,一切正常并且对应于ASCII.为什么是这样?它只会在更标准的符号之前和之后混淆,说(char)254 =一个整数符号.这绝对不是ASCII ...

如果是任何安慰,我在windoes 8机器上通过Code :: Blocks运行这个程序.

我的代码:

void display ()
{
   int i;
   for(i=0; i<256; i++)
   {
       printf("Character: %c", (char)i);
       printf("\tOccurrences: %d", characterCount[i]);
       printf("\n");
   }
}
Run Code Online (Sandbox Code Playgroud)

das*_*ght 5

ASCII将128个初始值中的所有字符指定为不可打印的字符.一些基于ASCII的编码为这些字符分配图形表示.它们还为字符128及以上字符分配图形表示,这些字符甚至不是ASCII编码的一部分.例如,一个名为Page 4的常见PC编码为字符1和2指定笑脸,描述卡的字符适用于字符3到7,依此类推.

你所描述的内容与第437页非常相似.但是,这种行为与系统有很大关系.