<分区>
我的 WIN32 (C++) 代码有一个 UINT,我们称它为 number。 此 UINT(或 INT 无关紧要)的值以 0 开头,并被识别为八进制 值。可以使用标准运算符,值将保留八进制。十六进制(前面的 0x)也是可能的。 问题是我必须在缓冲区中使用 number 的值来计算它而不更改 number 的值。我可以在声明行上为缓冲区分配一个像 07777 这样的值,但是如果使用像 buffer = number 这样的操作,缓冲区中的值将被识别为十进制。
谁能给我解决方案?
<分区>
我的 WIN32 (C++) 代码有一个 UINT,我们称它为 number。 此 UINT(或 INT 无关紧要)的值以 0 开头,并被识别为八进制 值。可以使用标准运算符,值将保留八进制。十六进制(前面的 0x)也是可能的。 问题是我必须在缓冲区中使用 number 的值来计算它而不更改 number 的值。我可以在声明行上为缓冲区分配一个像 07777 这样的值,但是如果使用像 buffer = number 这样的操作,缓冲区中的值将被识别为十进制。
谁能给我解决方案?
最佳答案
C 中没有“八进制值”这样的东西。整数以二进制形式存储。
比如这三个常量:
10
012
0xA
都具有完全相同的类型和值。它们只是不同的表示法——区别仅存在于您的源代码中,而不存在于运行时。将八进制常量分配给变量不会使变量成为八进制。
例如,这个:
int n = 012;
将值 ten 存储在 n
中。您可以使用多种格式中的任何一种打印该值:
printf("%d\n", n);
printf("0%o\n", n);
printf("0x%x\n", n);
在所有这三种情况下,存储的值都被转换为人类可读的字符序列,十进制、八进制或十六进制。
Anybody has a solution for me?
没有,因为没有实际问题。
(感谢 juanchopanza 在评论中提到了这一点。)
关于c++ - 将声明为 INT/UINT 的八进制/十六进制分配给另一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30901500/