トリッキーコードネット トップへ戻る   C/C++, Java, Perl, PHP, JavaScript, アルゴリズム, ショートコーディング, IOCCCコードの解説, 等々

サイト情報

トリッキーなコード

7行プログラミング

物凄いコード集

アルゴリズム

データ構造

C/C++な話題

コードサンプル

ツール/環境構築

開発ノウハウ 等

ネタ/ジョーク集

おススメ書籍/サイト

サイトTOP >> ネタ/ジョーク集 >> 摩訶不思議な演算子について (C言語)

【割って掛ける演算子・掛けて割る演算子】 - 知られざるC言語の演算子

C言語のネタを1つ御提供~^^;)

------------------------------------------------------------------------------

標準仕様には入っていない(と思う)のですが、初期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
関連ページ : printfの誤動作?!
         このエントリーをはてなブックマークに追加   


作業効率化・ライフハックのオススメ記事




コンピュータ・テクノロジーのオススメ記事





恋愛・人間関係のオススメ記事




※ 当サイトは、トップページからリンクで辿る事の出来るページに限り、リンクフリーです。
※ 当サイトの閲覧/利用によって生じた如何なる損害も、当サイト管理人は責任を負いません。
※ 当サイトの内容を転載される場合は、当サイトへのリンクをお願い致します。