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

标签 c++ winapi int octal uint

<分区>

我的 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/

相关文章:

c# - 在 C# 中构建 wParam 或 lParam 的好方法是什么? (比轮类运算符(operator)更友好的东西吗?)

python - 子类化 int 以允许 "unknown"值

数组中的 C++ 结构,帮助!

c++ - 传递二维数组时,该列是必需的

c++ - 使用 boost::asio::async_read 时出现段错误

java - java中矩阵的对角线值相乘

c - 在 C 中,为什么不能像将字符串值分配给 char* 一样将整数值分配给 int*?

c++ - 如何在 Windows 控制台中为特定像素着色

c++ - 无法检测浏览器窗口中的点击以触发功能

c - 使用文件对话框获取路径