3

对于 C 程序员来说,这可能是最简单的事情之一,但我真的无法理解。

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 是 4097 而不是 10001 ?

4

3 回答 3

5

00010001; 是一个八进制常数,因为它以 0 开头。如果这是你想要的十进制,你需要写 10001。

于 2012-08-10T12:46:46.330 回答
4

因为以 0 开头的整数常量被认为是八进制(以 8 为底)。所以一个数字 10001(八进制)== 十进制的 4097。

于 2012-08-10T12:46:24.250 回答
1

在 C 语言中,八进制常量从 0 开始。要使您的代码片段正常工作,请尝试使用 10001

于 2012-08-10T13:21:11.997 回答