2013-10-19 97 views
0

我有这样的C代码之间ACSII转换:Ç - 焦炭和int

#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

这是怎么连编译? – Sadique

回答

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

+0

好的,谢谢你我用双引号替换了双引号。 –

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); 
} 
+0

'用于字符串' - C中没有字符串类型。 – Sadique

+0

字符串我的意思是分配多个字符,就像我们在声明和初始化数组时一样。我会说清楚 –