プロが教える店舗&オフィスのセキュリティ対策術

就活で筆記試験がありました(C言語)。

問題は良く覚えていないのですが、char型で計算?をしていて、その答えを書けというものでした。

はっきり言ってまったく分かりませんでした。
char型は文字を入れるものと思っていたからです。

int型じゃなくchar型で計算などできるのでしょうか?
できるんなら例を挙げて解き方を教えてください。

めんどくさいでしょうがよろしくお願いします<(_ _)>

教えて!goo グレード

A 回答 (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が表示されるはずです。
    • good
    • 3
この回答へのお礼

実際にコピペしてコンパイルしてみました。

すると本当に3が表示されて驚きました!

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

お礼日時:2004/06/29 10:31

 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です。
    • good
    • 1

No.1の方もご指摘のように、実際にはchar型には文字ではなく、数値が入っています。

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

参考URL:http://hp.vector.co.jp/authors/VA008536/data/asc …

この回答への補足

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

両方無かったと思います。

補足日時:2004/06/29 17:41
    • good
    • 1

charってのは、そこのアドレスの器に「文字コード」が入っているので、そも「文字コード」を計算する場合があります。

'a'に1を加えると'b'になるような。
文字コード表を見てみましょう。
その他にはアドレスの計算っていう場合もありますね。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/06/29 10:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング