c++ - 错误 : cast from 'char*' to 'unsigned int' loses precision

标签 c++ c pointers

我正在编译一段代码,它在以下函数中给出了错误:

inline char *align(char *var, DataType_e type)
{
    return (DataTypeSize[type] == 0) ? var :
        (char*) (((unsigned int)(var) + DataTypeSize[type]-1) /
                 DataTypeSize[type] * DataTypeSize[type]);
}

以下错误符合“(unsigned int)(var)”:

error: cast from 'char*' to 'unsigned int' loses precision

如果我将“unsigned int”更改为“unsigned long”,编译工作正常,但在运行我的程序时我没有得到预期的结果。关于如何解决此问题的任何想法?

最佳答案

在 C 中,如果需要将指针转换为整数类型(但首先应避免使用),则应使用 [u]intptr_t

如果存在,这些类型保证不会丢失信息。

关于c++ - 错误 : cast from 'char*' to 'unsigned int' loses precision,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11207956/

相关文章:

c - 将 __m256i 存储为整数

c - C 中的结构体大小

c++ - Qt中如何使用MS access?

c++ - 关于光标更改的通知

c - a += b 比 C 中的 a = a + b 更有效吗?

c - 冒泡排序链表,交换指针。 C

C++从动态分配转换为引用

c++ - 我无法创建窗口

c++ - 如何使用 OpenImageIO 和 read_tiles() 读取平铺图像

无法将 -2147483648 分配给 long long 类型的变量