因此,可以说,一个字符包含字母“a”:如何添加字符的ascii值?
int main() {
int i=8;
char test2[2]="a"+i;
return 0;
}
我只想5添加到该字母的ASCII值的值。因此,test2将包含“h”,因为h的ASCII值为a + 8的ASCII值。
有没有简单的方法来做到这一点?我试着用google搜索,我认为这是一件基本的事情,但我显然错过了一个简单的方法来做到这一点。将不胜感激任何帮助。
因此,可以说,一个字符包含字母“a”:如何添加字符的ascii值?
int main() {
int i=8;
char test2[2]="a"+i;
return 0;
}
我只想5添加到该字母的ASCII值的值。因此,test2将包含“h”,因为h的ASCII值为a + 8的ASCII值。
有没有简单的方法来做到这一点?我试着用google搜索,我认为这是一件基本的事情,但我显然错过了一个简单的方法来做到这一点。将不胜感激任何帮助。
"a"
不是人物,而是一个字符串。你需要单引号来处理单个字符。
int i = 8;
char c = 'a' + i;
printf("c=%c\n", c);
输出:
c=i
有没有编译这一点,但不会(int)'a' + i
工作?
双引号不是char
,它是一个字符串文字。
我甚至不确定显式演员是否必要。 –
字符常量在C中有int类型,所以这会将int转换为int。 –
我这么认为。谢谢。 –
在C中,字符默认保存一个ACSII值(整数)。你的情况,使^ h出来的,你必须这样做:
#include <stdio.h>
int main() {
char test2 = 'a' + 7;
printf("%c\n\n", test2); // just check
return 0;
}
虽然'char'是C中的一个('signed'或'unsigned')整数类型,默认情况下编码是_not_ ASCII;这是一个实现细节,并没有被标准规定。 –
很高兴知道,谢谢 – KillerIsDead
例如,一些IBM系统曾经使用[EBCDIC](https://en.wikipedia.org/wiki/Extended_Binary_Coded_Decimal_Interchange_Code)代替ASCII。在这里,拉丁字母的字符不会以连续的顺序编码,导致一些ASCII相关的代码失败。这个问题在现有系统中仍然存在。 –
你加入我的字符串文字'“一”'的第一个元素的地址。尝试使用字符常量''a''代替。你也试图用标量值初始化一个数组。您的编译器应该警告您,如果没有,请启用所有警告。 –
[阅读一本好初学书](http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list)应该是一个好的开始。 –
'char test2 [2] = {'a'+ i-1};' – BLUEPIXY