TOP >> マニアックなプログラミング
トリッキーコードネット トリッキーなコード

【C言語クイズ3】摩訶不思議な演算子について

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; }
さて、上記コードの実行結果は以下の通りです。 C言語プログラミングクイズ:演算子 初めにbに7をセットしておき、「 b */= 5 」をした場合の bは「7」なのですが、 (↑ そりゃ~そうでしょ、掛けた数と同じ数で割れば) 何故か、 初めにaに10をセットしておき、「 a /*= 3 」をした場合の aは「5」になってしまう! という不思議。(割った数と同じ数を掛けているはずなのに…) ・・・さて、何故でしょう?? 皆さんはこのコードの謎を解くことが出来ますでしょうか^^;) 考え中

解答

ソースコードを色分けしてくれるエディタで、冒頭のコードを読み込んでみましょう。 特に、「/* ~ */ の コメント」を表示してくれるエディタが理想です^^;) ・・・もう分かりましたよね? 種明かしされると、な~んだorz って感じw C言語クイズ4 へ続きます。
トリッキーコードネット の TOPへ HOTNEWS の 総合TOPへ