输入上有单个字符Chr
。如果Chr
是大写,输出必须是Chr
的小写,反之亦然。C++,将大写字母改为小写字母,反之亦然,无条件分支的最有效方法
平凡的实现使用if else
声明:
if(Chr>='a' && Chr<='z') cout<<(unsigned char)(a-32);
else cout<<(unsigned char)(a+32);
你能没有提出任何分支条件的解决方案?
类似Chr + 32*(<sign of>(Chr - 'a'))
?
更新:当问这个问题时,我记住了ASCII。
在ASCII中的确可以,而且是一个聪明的做法。 (如果你提到这个限制,我认为这会得到很多upvotes。) – Bathsheba
这只适用于如果输入是字母字符,但不是标点符号,数字等。但如果确实如此,那么它很好。 – mars
A(41):0100,0001 vs a(61):0110,0001。所以位5(32)是开关。 ASCII很漂亮。 –