在 C 中增加一个字符
Increment a char in C
我有点不理解在c中增加一个字符。
假设:
char c = 'A';
现在,如果我执行 c+1
,c
中的值将是 'B'
。这可以。
但是为什么当我执行以下操作时:
c = c + argv[1][2]
然后我在 c
中得到了 'r'
为什么?
请假设参数为"in12345"
,则argv[1][2]
等于1
。
我想做的是一些输入,假设 ABCDEF 是在我从参数以循环方式执行它时接收 BDFHJG。但我不明白为什么以上内容对我不起作用。
为什么它不起作用,我该如何解决?
please suppose that the argument is in12345, then argv[1][2] is equal to 1.
不,不是。它等于 '1'
,或(假设为 ASCII)49.
'A'
(65) + '3'
(49) = 'r'
(114)
如果要从字符'1'
得到整数1
,需要进行转换。演员阵容无济于事;一种方法是使用一些算术魔法:
char c = 'A';
const int valToAdd = argv[1][2] - '0';
c = c + valToAdd;
// c is now 66, or `'B'`
但是,这有点 hack,如果 argv[1][2]
不在 '0'
到 '9'
范围内,它就会中断。您可以进一步研究从 ASCII 数字中获取整数的最佳(更好?)方法。
'1'
不是数字 1
,只是 49
,因为它是字符 '1'
的 ASCII 码。
所以您添加的不是 1
,而是 49
。
"in12345"
是由字符'i'、'n'、'1'、'2'等组成的字符串。也就是说,例如“1”不是数字。它是一个字符。所以在这个表达式中
c = c + argv[1][2]
你居然有
c = c + '1'
其中字符 c 添加了字符“1”的内部表示形式,在 ASCII table 中具有值 49
要将字符“1”转换为整数值 1,您可以编写例如
c = c + ( argv[1][2] - '0' )
或者只是
c += argv[1][2] - '0'
我有点不理解在c中增加一个字符。 假设:
char c = 'A';
现在,如果我执行 c+1
,c
中的值将是 'B'
。这可以。
但是为什么当我执行以下操作时:
c = c + argv[1][2]
然后我在 c
中得到了 'r'
为什么?
请假设参数为"in12345"
,则argv[1][2]
等于1
。
我想做的是一些输入,假设 ABCDEF 是在我从参数以循环方式执行它时接收 BDFHJG。但我不明白为什么以上内容对我不起作用。
为什么它不起作用,我该如何解决?
please suppose that the argument is in12345, then argv[1][2] is equal to 1.
不,不是。它等于 '1'
,或(假设为 ASCII)49.
'A'
(65) + '3'
(49) = 'r'
(114)
如果要从字符'1'
得到整数1
,需要进行转换。演员阵容无济于事;一种方法是使用一些算术魔法:
char c = 'A';
const int valToAdd = argv[1][2] - '0';
c = c + valToAdd;
// c is now 66, or `'B'`
但是,这有点 hack,如果 argv[1][2]
不在 '0'
到 '9'
范围内,它就会中断。您可以进一步研究从 ASCII 数字中获取整数的最佳(更好?)方法。
'1'
不是数字 1
,只是 49
,因为它是字符 '1'
的 ASCII 码。
所以您添加的不是 1
,而是 49
。
"in12345"
是由字符'i'、'n'、'1'、'2'等组成的字符串。也就是说,例如“1”不是数字。它是一个字符。所以在这个表达式中
c = c + argv[1][2]
你居然有
c = c + '1'
其中字符 c 添加了字符“1”的内部表示形式,在 ASCII table 中具有值 49
要将字符“1”转换为整数值 1,您可以编写例如
c = c + ( argv[1][2] - '0' )
或者只是
c += argv[1][2] - '0'