c++ - 将 unsigned int 类型转换为 unsigned long int C++

标签 c++ c

我对编程有点陌生。我有这个问题。我有一个变量

unsigned long address;

我正在使用

fscanf(pFile, "%x\n", &address);

从文件中读取数据。该文件以十六进制(不带 0x)形式存在,并将其转换为十进制并存储。所以我有点不愿意改变这部分。当我使用 g++ 编译时,它要求我将地址更改为

unsigned int address;

现在,这个“地址”变量用在我将调用的函数中,该函数的参数为​​“unsigned long”。所以,如果我“寻址”到“unsigned int”,我该如何调用这个函数

function(address);

使得地址被类型转换为 unsigned long

最佳答案

将地址传递给 fscanf() 时,类型必须与格式说明符完全匹配。当您使用 %x 时,您声明您将传递一个指向 unsigned int 的指针。如果您觉得要传递一个指向 unsigned long 的指针,则需要使用格式说明符 %lx:

if (fscanf(pFile, "%lx", &address) == 1) {
    // ...
}

(我不能在不检查输入是否成功的情况下使用输入功能...)。

关于c++ - 将 unsigned int 类型转换为 unsigned long int C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20058297/

上一篇:c 命令行 int 错误

下一篇:c - If结构语句

相关文章:

c - 为什么不能用双指针来表示二维数组呢?

c++ - 使用指向 vector 中元素的指针是否危险?

c++ - 文本文档中的换行符?

c++ - 如何检测并在眼睛的虹膜区域周围画一个圆圈?

c - 将二维数组写入C中的文件

c - Win32 C++ ListView HDN_BEGINTRACK 不起作用

c++ - 不能将规范与 fmt 库混合

C++ if...then 语句

c - 为什么我可以使用 char 指针而不使用 malloc?

没有警告的 C Unix 程序仍然无法运行