如果这个问题已在其他地方得到回答,我深表歉意,但我已经搜索过,但尚未找到答案......
编译以下代码时收到以下警告:
warning: conversion to 'short unsigned int' from 'int' may alter its value
这是代码的摘录(几个例子来说明我的问题):
std::vector<unsigned short int> list = {1};
unsigned short int one = 1;
one += list.at(0); // produces warning
one += 1; // produces warning
one += static_cast<unsigned short int> 1; // produces warning
one++; // does not produce warning
除了加法之外,我还尝试了其他形式的算术。为什么编译器会抛出此警告,声称我正在从“int”转换为“unsigned short int”(尤其是当我明确将其转换为无符号时)?看起来,对于第二种情况,'one += 1;',因为表达式的右侧是一个正数,编译器将它添加到无符号变量 'one' 中不会有任何问题。
此外,最后的测试,'one++;' 不会产生警告,我不知道为什么。
我仍然习惯在这里提问,所以如果这个问题是微不足道的或不清楚的,请原谅我。谢谢!