すいません、初心者じゃない(つもり)なんですが、初心の質問させてください。
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;
}
どうしてでしょうか?