掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
オーバーフローの判定をするには? (ID:68592)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
unsigned char だから 8bit しか入らない = 演算結果も常に 8bit/16進2桁 で表示される と思っている?前半は正しく、後半は間違い。 unsigned char x=123; unsigned char y=~x; printf("%#x\n", y); printf("%#x\n", ~x); ということで結果が違うわけだ。 この辺を理解するには「 C/C++ は char では演算しない」という仕様を理解する必要がある 言語規格書では汎整数拡張とか呼ばれているわけで。 http://ja.wikipedia.org/wiki/%E6%B1%8E%E6%95%B4%E6%95%B0%E6%8B%A1%E5%BC%B5 既に指摘があるように &255 すれば16進2桁になる。 俺の例では y=~x; を実行する際に &255 演算が隠れているわけだ。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.