2017-06-02 34 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相关的代码失败。这个问题在现有系统中仍然存在。 –