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

【トリッキーなコード】+-が連続している演算 (C言語)

さて、以下のコードを実行すると・・・、

#include <stdio.h> int main() { int i; i = 1 + 1; printf("%d\n", i); i = 1 +- 1; printf("%d\n", i); i = 1 +-+ 1; printf("%d\n", i); i = 1 +-+- 1; printf("%d\n", i); i = 1 + + + + + + 1; printf("%d\n", i); i = 1 - - - - - - 1; printf("%d\n", i); i = 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1; printf("%d\n", i); return 0; }
以下の様な結果が表示されます^^;) +-が連続した演算(C言語) 補足しておくと、 単項演算子の結合方向は右から、2項演算子の結合方向は左から。 そして、 優先順位は単項 > 2項 の為、 1 +- 1 ⇒ 1 + (-1) ⇒ 1 - 1 = 0 1 +-+ 1 ⇒ 1 + (-(+1)) ⇒ 1 + (-1) = 0 1 +-+- 1 ⇒ 1 +(-(+(-1))) ⇒ 1 + 1 = 2 1 + + + + + + 1 ⇒ 1 + (+ (+ (+ (+ (+1))))) ⇒ 1 + 1 = 2 1 - - - - - - 1 ⇒ 1 - (- (- (- (- (-1))))) ⇒ 1 - (-1) = 2 というワケです。(n‘∀‘)η ※ +だけ、-だけの演算は、++, --と認識されてしまうので、間にスペースを入れる 必要があります。 +-でAAソースコードを作って、遊べそうですね♪ ^^;)
トリッキーコードネット の TOPへ HOTNEWS の 総合TOPへ