在C / C ++中使用chars执行算术运算

时间:2014-02-26 14:44:51

标签: c++ c

这个C / C ++代码如何工作?我理解其中的大部分内容,但不是下面指定的部分:

c2= (c1>='a' && c1<='z') ? ('A'+c1-'a'):c1

特别是这部分:

('A'+c1-'a')

这部分代码在做什么?

c1c2都有char类型。

3 个答案:

答案 0 :(得分:8)

代码将小写字符转换为大写字母。如果字符不是小写,则返回原始字符。

表达式('A'+c1-'a')执行转换。 c1-a将在字母表中给出字符的从0开始的位置。通过将此值添加到A,您将获得c1的大写等效值。

更新:如果c1为'b',则表达式c1-'a'将给出1,这是字母表中'0'的基于0的位置'将'添加到'A'然后给'B'

答案 1 :(得分:2)

这部分:

('A'+c1-'a')

c1从小写更改为大写。

整个陈述:

c2= (c1>='a' && c1<='z') ? ('A'+c1-'a'):c1

说“如果c1是小写,请将其更改为大写并将其分配给c2;否则,只需将c1指定给c2。”

答案 2 :(得分:1)

char只是整数。您可以在它们上添加经典操作。

该操作将(如果需要)将小写字符cc1转换为大写字母char。 但它很棘手,依赖ASCII编码工作,可能无法与某些特定的本地工作。

相反,我建议使用std :: toupper,它考虑当前的本地执行操作