我正在开展一个将代码从 32 位迁移到 64 位的项目,其中我遇到一个问题,其中表达式包含 unsigned Short
和 size_t
变量的混合以及结果值为无符号短整型
。
示例代码如下:
unsigned short foo = GETSOMEVALUE();
size_t bar = GETSOMEVALUE();
unsigned sort res = foo + bar;
在 gcc 64 位中编译此代码时,我收到警告
conversion to short unsigned int from "size_t" may alter its value
我在表达式中添加了(无符号短)的类型转换并对其进行了编译,并再次收到了警告
conversion to "short unsigned int" from "int" may alter its value
如何删除上述警告并保持变量类型不变? 我的实际问题是 gcc 无法将 64 位类型转换为 16 位类型。这是一些编译器定义的问题,或者我做错了一些事情。
最佳答案
- [
我不敢相信自己正在回答这个问题
] - [
我不对任何后果负责
] - [
使用此功能需要您自担风险
]。
也许您想要的是带有 gcc
的 -Wno-conversion
开关。
关于c - 无法在 gcc 的算术表达式中将 size_t 类型转换为 unsigned Short,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27059273/