0

我的WIN32 (C++) 代码有一个 UINT 让我们称之为number。此 UINT(或 INT 无关紧要)的值以0开头,并被识别为八进制值。可以使用标准运算符,并且该值将保持八进制系统。十六进制(前面的 0x)也是如此。问题是我必须使用缓冲区中的number值来计算它而不改变number的值。我可以在声明行为缓冲区分配一个像 07777 这样的值,但是如果使用像buffer = number这样的操作,则缓冲区中的值会以十进制为基数识别。

有人有我的解决方案吗?

4

1 回答 1

7

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

例如,这三个常量:

  • 10
  • 012
  • 0xA

都具有完全相同的类型和值。它们只是不同的符号——差异存在于您的源代码中,而不存在于运行时。将八进制常量分配给变量不会使变量变为八进制。

例如,这个:

int n = 012;

将值10存储在n. 您可以以多种格式中的任何一种打印该值:

printf("%d\n", n);
printf("0%o\n", n);
printf("0x%x\n", n);

在所有这三种情况下,存储的值都被转换为人类可读的字符序列,以十进制、八进制或十六进制表示。

有人有我的解决方案吗?

不,因为没有实际问题。

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

于 2015-06-17T20:24:30.027 回答