• ベストアンサー

charでの計算?

就活で筆記試験がありました(C言語)。 問題は良く覚えていないのですが、char型で計算?をしていて、その答えを書けというものでした。 はっきり言ってまったく分かりませんでした。 char型は文字を入れるものと思っていたからです。 int型じゃなくchar型で計算などできるのでしょうか? できるんなら例を挙げて解き方を教えてください。 めんどくさいでしょうがよろしくお願いします<(_ _)>

質問者が選んだベストアンサー

  • ベストアンサー
  • ceita
  • ベストアンサー率24% (304/1218)
回答No.2

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が表示されるはずです。

k-zi
質問者

お礼

実際にコピペしてコンパイルしてみました。 すると本当に3が表示されて驚きました! ありがとうございました!

その他の回答 (3)

  • V-bravo-U
  • ベストアンサー率51% (155/301)
回答No.4

 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です。

回答No.3

No.1の方もご指摘のように、実際にはchar型には文字ではなく、数値が入っています。参考URLのように文字が数値に置き換えられてコンピューターは処理します。コンピュータが0と1の二つの数値しか扱えないことから想像は出来ると思います。 それで実際の試験では文字コードとかは問題に書かれていなかったのでしょうか?例えばa=61とするとか、それともアスキーコード表を使えとか。

参考URL:
http://hp.vector.co.jp/authors/VA008536/data/ascii.html
k-zi
質問者

補足

>それで実際の試験では文字コードとかは問題に書かれていなかったのでしょうか?例えばa=61とするとか、それともアスキーコード表を使えとか。 両方無かったと思います。

回答No.1

charってのは、そこのアドレスの器に「文字コード」が入っているので、そも「文字コード」を計算する場合があります。'a'に1を加えると'b'になるような。 文字コード表を見てみましょう。 その他にはアドレスの計算っていう場合もありますね。

k-zi
質問者

お礼

ありがとうございました!

関連するQ&A