C - char和int之间的ascii转换

时间:2013-10-19 08:04:55

标签: c ascii

我有这个C代码:

#include <stdio.h>

int main()
{
     for (char c = "A"; c <= "Z"; c = (char)((int) c + 1))
         printf("%c: %d\n", c, (int) c; 
}

打印所有大写字母及其ascii数字的非常简单的程序

但我的结果并不是很理想

它实际打印出来

\: 92
]: 93
^: 94
_: 95
`: 96
a: 97
b: 98
c: 99
d: 100
e: 101
f: 102
g: 103
h: 104
i: 105
j: 106
k: 107
l: 108
m: 109
n: 110
o: 111
p: 112
q: 113
r: 114
s: 115
t: 116
u: 117
v: 118
w: 119
x: 120
y: 121
z: 122
{: 123
|: 124
}: 125
~: 126
: 127

有人可以向我解释一下吗?

我刚开始学习C而无法找到原因。

2 个答案:

答案 0 :(得分:3)

执行此操作时,程序会导致未定义的行为:

char c = "A"; c <= "Z"

请使用单引号。更正的计划:

#include <stdio.h>

int main()
{
    char c = 'A';
     for (; c <= 'Z'; c = (char)((int) c + 1))
         printf("%c: %d\n", c, (int) c); 
}

"A""Z"是字符串文字。 'A''Z'是字符文字

答案 1 :(得分:1)

您无法使用" "分配字符变量。

""用于分配多个字符。

char c[]="hello world";

其中''用于单个字符

char c='A';

正确的代码应该是:

#include <stdio.h>

int main()
{
     char c;

     for (c = 'A'; c <= 'Z'; c = (char)((int) c + 1))
         printf("%c: %d\n", c, (int) c); 
}