すいません、初心者じゃない(つもり)なんですが、初心の質問させてください。 char data[100]; というデータがあるとき、 unsigned int func1(int i) { unsigned char* p = reinterpret_cast<unsigned char*>(data); unsigned int r = p[i]; r |= p[i + 1] << 8; r |= p[i + 2] << 16; r |= p[i + 3] << 24; return r; }
unsigned int func2(int i) { unsigned int ret = data[i]; ret += data[i+1] << 8; ret += data[i+2] << 16; ret += data[i+3] << 24; return ret; } この2つの関数の出力が違う場合があるのですが、(たとえばこうやって初期化した場合) for (int i = 0; i < 100; ++i) { data[i] = 129; } どうしてでしょうか?