無差別に技術をついばむ鳥

情報処理技術全般を気まぐれにつつくゆるいブログです

Dをつつく16−シフト演算。スイ〜スイ〜。

さて、今回はD言語のシフト演算を確認しよう。他の言語を経験している人は面倒なだけと思うだろうけど、意外とチェックするポイントがあるピヨ。
まぁ、気楽にこのコードを実行してみて。


import std.stdio;

int main( char[][] ) {
    int value = -8;
    writeln(value, "を1ビット右シフトすると「", value >> 1, "」になった");
    value = -8;
    writeln(value, "を1ビット左シフトすると「", value << 1, "」になった。");

    //オーバーフローした場合をチェック
    value = 2;
    writeln(value, "を32ビット左シフトすると「", value << 32, "」になった。");
    value = 2;
    writeln(value, "を32ビット右シフトすると「", value >> 32, "」になった。");
    return 0;
}


このコードを見ればボクがチェックするべきだと言った理由が分ると思う。 シフト演算を普通に使っている時は言語ごとの差異は記号ぐらいしかないけど、 オーバーフローした時の挙動は言語ごとに違うピヨ。 注意してね。
ところでこのコードの実行結果はどうだった?
オーバーフローで例外が発生しないと思わなかったでしょ?
多言語を扱う場合はこういった盲点を事前にチェックしておこう。
ドリィちゃん「なに偉そうな事言っているのよ。それ私が貴方に言った事でしょょw」
う、うん。まぁね。ええと・・・。と、とにかく、これ以上ドリィちゃんに何か言われる前に終わり。
> 1, "」になった"); value = -8; writeln(value, "を1ビット左シフトすると「", value ...">別窓 | D | コメント:0 | トラックバック:0 | ∧top | under∨
<<Dをつつく17−構造体。初期化法がチャームポイント。 | 無差別に技術をついばむ鳥 | D関連記事の目次>>

この記事のコメント

∧top | under∨

コメントの投稿

 

管理者だけに閲覧
 

この記事のトラックバック

∧top | under∨
| 無差別に技術をついばむ鳥 |