輸入上有單個字符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很漂亮。 –