C言語クイズの3問目です。
C言語クイズ1, C言語クイズ2 と比べると、かなり難易度は下がっています。
(むしろ "ネタ" に近いかも?? ^^)
問題
C言語の標準仕様には入っていませんが、初期ccでサポートされていたこともあり 大抵のコンパイラで実装されている、知られざる演算子をご存じですか?
#include <stdio.h>
int main(void)
{
int a = 10, b = 7;
printf("割って掛ける演算子、掛けて割る演算子\n");
// 3で割ってから、3で掛ける演算子
a /*= 3;
// 5で掛けてから、5で割る演算子
b */= 5;
printf("a = %d\nb = %d\n", a, b);
return 0;
}
さて、上記コードの実行結果は以下の通りです。
初めにbに7をセットしておき、「 b */= 5 」をした場合の bは「7」なのですが、
(↑ そりゃ~そうでしょ、掛けた数と同じ数で割れば)
何故か、
初めにaに10をセットしておき、「 a /*= 3 」をした場合の aは「5」になってしまう!
という不思議。(割った数と同じ数を掛けているはずなのに…)
・・・さて、何故でしょう??
皆さんはこのコードの謎を解くことが出来ますでしょうか^^;)
解答
ソースコードを色分けしてくれるエディタで、冒頭のコードを読み込んでみましょう。
特に、「/* ~ */ の コメント」を表示してくれるエディタが理想です^^;)
・・・もう分かりましたよね?
種明かしされると、な~んだorz って感じw
C言語クイズ4 へ続きます。