这个C / C ++代码如何工作?我理解其中的大部分内容,但不是下面指定的部分:
c2= (c1>='a' && c1<='z') ? ('A'+c1-'a'):c1
特别是这部分:
('A'+c1-'a')
这部分代码在做什么?
c1
和c2
都有char
类型。
答案 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,它考虑当前的本地执行操作