4
これはなぜ動作しないのか説明できる人はいますか?私は、charバッファにunsigned intを入れて、別のunsigned intに戻しています。unsigned intをchar配列に入れてそれを元に戻す方法
1 #include<stdio.h>
2 #include<string.h>
3 int main(){
4 unsigned int tester = 320;
5 char buffer[512];
6 memset(buffer,0,512);
7 memcpy(buffer,&tester,sizeof(unsigned int));
8 /*buffer[0]|=tester;
9 buffer[1]|=(tester>>8);
10 buffer[2]|=(tester>>16);
11 buffer[3]|=(tester>>24);*/
12 unsigned int tested;
13 memcpy(&tested,buffer,sizeof(unsigned int));
14
15 /*tested|=(buffer[3]<<24);
16 tested|=(buffer[2]<<16);
17 tested|=(buffer[1]<<8);
18 tested|=(buffer[0]);*/
19 printf("\n %d\n",tested);
20 }
memcpyを実行すると動作します。しかし、私はビット単位のアプローチを取るとうまくいきません。面白いのは、私はそれが動作するようにバッファサイズを置くときです。しかし、私は大きなバッファ、または50を使用する場合、それは常にbitwise appraochで368を出力します。再びmemcpyはうまく動作します。
gccは、 '-Wall'に含まれている' -Wuninitialized'を指定すると警告します。 – Christoph
オプションなしでOPに警告しました。 ;-) –
あなたは正しいです!ありがとう!!それはテストされたものがゴミで初期化され、私がやっているのはそれを上書きしているからですか? – user949110