0

我有这个 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,不知道为什么。

4

2 回答 2

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'是字符文字

于 2013-10-19T08:08:48.093 回答
1

您不能使用 分配给字符变量" "

""用于分配多个字符。

char c[]="hello world";

其中 as''用于单个字符

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); 
}
于 2013-10-19T08:12:34.057 回答