我有这个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而无法找到原因。
答案 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);
}