2017-06-02 158 views
0

因此,可以說,一個字符包含字母「a」:如何添加字符的ascii值?

int main() { 
int i=8; 
char test2[2]="a"+i; 
return 0; 
} 

我只想5添加到該字母的ASCII值的值。因此,test2將包含「h」,因爲h的ASCII值爲a + 8的ASCII值。

有沒有簡單的方法來做到這一點?我試着用google搜索,我認爲這是一件基本的事情,但我顯然錯過了一個簡單的方法來做到這一點。將不勝感激任何幫助。

+0

你加入我的字符串文字'「一」'的第一個元素的地址。嘗試使用字符常量''a''代替。你也試圖用標量值初始化一個數組。您的編譯器應該警告您,如果沒有,請啓用所有警告。 –

+1

[閱讀一本好初學書](http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list)應該是一個好的開始。 –

+1

'char test2 [2] = {'a'+ i-1};' – BLUEPIXY

回答

2

你要添加到char,不是字符串:

char test2[2] = { 'a' + i, 0 }; 
+0

謝謝,現在有道理。感謝您的幫助。 – user7977797

1

"a"不是人物,而是一個字符串。你需要單引號來處理單個字符。

int i = 8; 
char c = 'a' + i; 
printf("c=%c\n", c); 

輸出:

c=i 
0

有沒有編譯這一點,但不會(int)'a' + i工作?

雙引號不是char,它是一個字符串文字。

+0

我甚至不確定顯式演員是否必要。 –

+1

字符常量在C中有int類型,所以這會將int轉換爲int。 –

+0

我這麼認爲。謝謝。 –

0

在C中,字符默認保存一個ACSII值(整數)。你的情況,使^ h出來的,你必須這樣做:

#include <stdio.h> 

int main() { 
char test2 = 'a' + 7; 
printf("%c\n\n", test2); // just check 
return 0; 
} 
+1

雖然'char'是C中的一個('signed'或'unsigned')整數類型,默認情況下編碼是_not_ ASCII;這是一個實現細節,並沒有被標準規定。 –

+0

很高興知道,謝謝 – KillerIsDead

+0

例如,一些IBM系統曾經使用[EBCDIC](https://en.wikipedia.org/wiki/Extended_Binary_Coded_Decimal_Interchange_Code)代替ASCII。在這裏,拉丁字母的字符不會以連續的順序編碼,導致一些ASCII相關的代碼失敗。這個問題在現有系統中仍然存在。 –