3

C プログラマーにとって最も単純なことの 1 つかもしれませんが、私には理解できません。

unsigned char Value[4]; 
unsigned long ulVer = 00010001;
unsigned long uSize = sizeof(ulVer);
memcpy(Value, &ulVer, uSize);
memcpy(&ulVer, Value, uSize); 
printf("%d",ulVer); 

なぜ ulVer は 10001 ではなく 4097 なのですか?

4

3 に答える 3

5

00010001; は0から始まるため、8進数の定数です。10進数で必要な場合は、10001を書き込む必要があります。

于 2012-08-10T12:46:46.330 に答える
4

0で始まる整数定数は、8進数(基数8)と見なされるためです。したがって、数値10001(8進数)== 4097(10進数)。

于 2012-08-10T12:46:24.250 に答える
1

C では、8 進定数は 0 から始まります。コード スニペットを機能させるには、10001 を使用してみてください

于 2012-08-10T13:21:11.997 に答える