- ベストアンサー
charでの計算?
就活で筆記試験がありました(C言語)。 問題は良く覚えていないのですが、char型で計算?をしていて、その答えを書けというものでした。 はっきり言ってまったく分かりませんでした。 char型は文字を入れるものと思っていたからです。 int型じゃなくchar型で計算などできるのでしょうか? できるんなら例を挙げて解き方を教えてください。 めんどくさいでしょうがよろしくお願いします<(_ _)>
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
C言語の型は、数字や文字に分類されているように見えますが、 実際には変数の大きさを示すだけだと考えることもできます。 つまりcharならASCIIコードが収められるように8bitの大きさで、 intは(32bitのwindowsなら)32bitです。 それを数値として考えたときには、 char は-127~127、intは-68719476734~68719476734までの整数として表されます。 なので、 char a,b; a = 1; b = 2; printf("%i",a+b); などとすれば3が表示されるはずです。
その他の回答 (3)
- V-bravo-U
- ベストアンサー率51% (155/301)
char型自体で計算する方法は皆さんご指摘されていますので、 ちょっと違う視点から回答させていただきます。 { char *str = "Hello world!\n"; printf("%s",str); str += 6; printf("%s",str); return; } 上のプログラムで出力結果は次のようになります。 Hello world! world! No.1の方の指摘するアドレス計算(個人的にはポインタ計算)の例です。 もしかしたらこっちのことかな?と思って書かせていただきました。(^^; 補足: 8ビットchar型の演算可能範囲は signedで-128~+127 unsignedで0~255です。 32ビットint型は signedで-2147483648~+2147483647 unsignedで0~4294967295です。
- 20centuryboy
- ベストアンサー率44% (85/190)
No.1の方もご指摘のように、実際にはchar型には文字ではなく、数値が入っています。参考URLのように文字が数値に置き換えられてコンピューターは処理します。コンピュータが0と1の二つの数値しか扱えないことから想像は出来ると思います。 それで実際の試験では文字コードとかは問題に書かれていなかったのでしょうか?例えばa=61とするとか、それともアスキーコード表を使えとか。
補足
>それで実際の試験では文字コードとかは問題に書かれていなかったのでしょうか?例えばa=61とするとか、それともアスキーコード表を使えとか。 両方無かったと思います。
- SteveStrawb
- ベストアンサー率18% (141/774)
charってのは、そこのアドレスの器に「文字コード」が入っているので、そも「文字コード」を計算する場合があります。'a'に1を加えると'b'になるような。 文字コード表を見てみましょう。 その他にはアドレスの計算っていう場合もありますね。
お礼
ありがとうございました!
お礼
実際にコピペしてコンパイルしてみました。 すると本当に3が表示されて驚きました! ありがとうございました!