【发布时间】:2018-07-04 13:04:01
【问题描述】:
在现有代码库中解决此类警告的正确方法是什么?
void test(uint16_t x, uint16_t y)
{
// warning: conversion to 'uint16_t' from 'int' may alter its value
uint16_t value = (x + 1) * y;
...
}
所有三个值都是无符号的 16 位整数,并且任何算术溢出都将正确执行而不会发出警告,因为该平台的 int 是 16 位的,我看不出应该以另一种方式编写这段代码,除了由于整数提升,从转换结果。
- 我应该在所有这些情况下施放吗?投射感觉就像我做错了什么。
- 禁用警告?我不希望完全禁用该警告,因为它在某些情况下可能有用。
【问题讨论】:
-
是的,但
int可能是 32 位或更多。
标签: c gcc type-conversion gcc-warning