2013-10-19 135 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

字符串我的意思是分配多個字符,就像我們在聲明和初始化數組時一樣。我會說清楚 –