大学生になったんで、さっそく授業で C言語を習っている息子から質問LINEが来た。
(俺は日ごろ全然 C言語は使わないんだけど、まあ、入門問題くらいには答えられる(笑))
問題は、
int i;i = 077;printf("i = %f\n", i);
だと、
i = 63.000000
と表示されるものを、
i = 77
と表示されるように修正しろってもの。
息子は 077 が 8進数の記述だということがわからず、それでハマッている様子。
「答えはいらんから、ヒントをくれ」というので、「8進数と10進数の書き方。ちなみに、16進数は 0x77」とヒントを出すと、「そういうことか!!」と息子の答えが返ってきた。
int i;i = 077;printf("i = %02o\n", i);
と、printf の変換子だけ修正した形だ。8進数のまま 77と出したいんやな。(2桁の数字を 2桁で出すんで、02 はいらんけどな)
なるほど。俺は、「077 は 8進数なんで、10進数なら 77と書くんよ」という問題だと思ったので、
int i;i = 77;printf("i = %d\n", i);
じゃねえの?って回答したんだけど、実際、先生がどっちの意図で問題出してるかわからんので、どっちも正解やな。
息子は結局、「10進の 77を出せっていう問題な気がする」と、俺の回答案を採用するというてるんだけど、実際どっちかわからんし、せっかく自分で回答考えたんだから 8進の 77を表示するほうを提出せえよ・・・と言うてるんだけど。
いやあ、しかし、そのうち C言語のややこしい質問には答えられなくなるなあ。
「先生に、Perlじゃだめですか?って聞いてみい」と言わざるを得なくなるな(笑)
#ちなみに我が家では、長男坊にはいっさいプログラミングを教えてません。大学生になって初めてプログラミングに触れた息子(笑)
コメントする