コメント - CLX C++ Libraries の動作確認 への対応.コメントで,以下のソースコードでうまく encode/decode されないと言う指摘がありました(ソースコードは若干改変). #include <iostream> #include <string> #include "clx/uri.h" int main() { std::string dest = clx::uri::encode("http://日本語.com"); std::cout << "encode: " << dest << std::endl; std::cout << "decode: " << clx::uri::decode(dest) << std::endl; return 0; } これを手元の環境(cygwin gcc 4.1.2, VC++ 8.0)で実行すると,以下のような結果
C言語には、ビットシフト演算子というものがあります。左シフト演算子(<<)と右シフト演算子(>>)です。同じビット演算でも、ビット単位の論理和(|)や論理積(&)、NOT(~)等はの方は、フラグ型の変数の処理で使われる事が多い気がしますが、ビットシフトの方は使用されるケースはあまりないかもしれません。 さて、このビットシフト演算子で時々問題になるのが、符号ビットが立っている時の右シフト演算です。見逃されがちなポイントは、 型によって挙動(算術シフトか論理シフトか)がかわることがある C言語の規格として、算術シフトか論理シフトかは不定 Nbitの算術シフトと2のN乗での除算は等価ではない といったところにあります。 算術シフト(shift arithmetic)と論理シフト(shift logical:又は0充填シフト)という言葉をご存知ない方のためにちょっと説明を書いておくと、シフトによっ
前回unsignedでよく陥りがちなバグについて触れました。今回はその続編で、char型での落とし穴として、いわゆる符号拡張(sign extension)と暗黙の型変換(inplicit conversion)について説明します。 次のコードの問題点はわかるでしょうか? typedef char value_t; #define INVALID 0xff /* valがINVALIDなら0、それ以外で1を返す */ int check(value_t val) { switch (val) { case INVALID: return 0; default: return 1; } 一見問題なさそうに思えますが、実際このコードをコンパイルして、valにINVALID(0xff)を指定しても1が帰ってきます。なぜでしょう? C言語のswitch分では、比較値はint型として扱われます。よっ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く