« シェアウェア登録方法がよく分からん | トップページ | [メモ] 仮想ディスクを入れ替えても、ディレクトリ構造が残ってる場合 »

[メモ] 符号有無を変えるだけのキャストを間違えないように

バグかよ>俺
再発防止策。

今後もひょんなところで間違えちゃったりするかも知れないので、本当は、専用クラス作って、operator()とか実装したり、なんかするといいんだろうし、多分、探せばあるんだろうけど、まぁ、数行で対応できるので。

#define DEF_changesigntype(T) \
    inline unsigned T to_unsigned(T x) { return (unsigned T) x; } \
    inline unsigned T to_unsigned(unsigned T x) { return x; } \
    inline T to_signed(unsigned T x) { return (T) x; } \
    inline T to_signed(T x) { return x; }
DEF_changesigntype(char)
DEF_changesigntype(short)
DEF_changesigntype(int)
DEF_changesigntype(__int64)

これで、整数型符号有無変換キャスト関数to_unsigned、to_signedオーバーロードのできあがり。
共通ヘッダ(stdafx.h)にでも仕込んどけばいいと思われ。

char a = –1;
int b = to_unsigned(a);

ちゃんとbに255が得られる安心感。
define使うのがちょっと気持ち悪いけど、キャスト指定をコードに直接書くよりは遥かにマシではなかろうかね?

|

« シェアウェア登録方法がよく分からん | トップページ | [メモ] 仮想ディスクを入れ替えても、ディレクトリ構造が残ってる場合 »

趣味」カテゴリの記事

コメント

この記事へのコメントは終了しました。