将八进制/十六进制声明的INT/UINT分配给另一个变量

0 c++ int winapi octal uint

我的WIN32(C++)代码有一个UINT让我们调用它号码.此UINT(或INT无关紧要)的值以0开头,并被识别为八进制值.可以使用标准运算符,值将保持八进制.十六进制也是可能的(前面的0x).问题是我有利用价值在缓冲区与它来计算不改变的值.我可以在声明行上为缓冲区分配一个类似07777的值,但如果使用像buffer = number这样的操作,缓冲区中的值将在十进制基数上识别.

有人为我解决了吗?

Kei*_*son 6

C中没有"八进制值"这样的东西.整数以二进制形式存储.

例如,这三个常量:

  • 10
  • 012
  • 0xA

所有类型和价值都完全相同.它们只是不同的符号 - 并且差异仅存在于源代码中,而不是在运行时.为变量分配八进制常量不会使变量为八进制.

例如,这个:

int n = 012;
Run Code Online (Sandbox Code Playgroud)

存储值n.您可以使用以下几种格式打印该值:

printf("%d\n", n);
printf("0%o\n", n);
printf("0x%x\n", n);
Run Code Online (Sandbox Code Playgroud)

在所有三种情况下,存储的值都将转换为人类可读的字符序列,十进制,八进制或十六进制.

有人为我解决了吗?

不,因为没有实际问题.

(在评论中提到这一点,归功于juanchopanza.)