dekopinvar1
@dekopinvar1

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

getchar()について

Q&A

入力した文字を大文字や小文字に変換する問題を解いています。
解答例に以下のようなものがありました。
getchar()を使用した例です。
これはint型に変換する特性を持っていますが、以下の文の意味が分かりません。

include

int main(){
char ch;
while((ch = getchar()) != EOF){
if(ch >= 97 && ch <= 122)
printf("%c",ch-32);
else if(ch >= 65 && ch <= 90)
printf("%c",ch+32);
else
printf("%c",ch);
}
}

変数chaは演算子を使って計算ができるのですが?
また入力した文字が大文字に変換されます。なぜですか?

0

1Answer

charは1バイト整数を表すのでsignedだと-128~127、unsignedでしたら0~255の範囲を表すことができます。
なので演算子は通常の数値計算と同じ意味です。
文字はASCIIコードで表すことができ、(参考:Wikipedia ASCIIコード)ここで大文字A-Zは十進で65-90、小文字a-zは97-122となっています。
なのでこの範囲にある文字はアルファベットと判断でき、大文字、小文字間は32ずれているので例示されているような計算でシフトできます。
printfで%cで表示すると文字としてプリントしてくれます。試しにint型と同様に%dを指定すると数値として表示できるので比較してみるとわかりやすいと思います。

0Like

Your answer might help someone💌