首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么在添加空头时会出现从int到short的缩小转换警告?(C++)

为什么在添加空头时会出现从int到short的缩小转换警告?(C++)
EN

Stack Overflow用户
提问于 2022-04-12 12:16:33
回答 1查看 313关注 0票数 2

对于以下数组,我有一个类似于此的代码:

代码语言:javascript
运行
复制
long int N = 424242424242; //random number
short int* spins = new short int spins[N];
std::fill(spins, spins+N, 1);

现在,让我们假设出于某种原因,我想将数组的几个元素添加到一个名为nn_sum的短int中:

代码语言:javascript
运行
复制
short int nn_sum = spins[0] + spins[1];

但是,当我在CLion IDE上这样做时,Clang将其标记为黄色并告诉我:

代码语言:javascript
运行
复制
Clang-Tidy: Narrowing conversion from 'int' to signed type 'short' is implementation-defined

为什么会发生这种情况?为什么要缩小范围呢?在添加短裤时,C++是否将其转换为ints?如果是这样的话,我还能做些什么让它更好地工作吗?甚至把短裤全扔了?

请记住,在应用程序中计算非常密集的部分中有这样的代码,因此我希望使其尽可能高效。任何其他建议也将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-12 12:25:24

这是因为整数提升。添加两个short值的结果不是short,而是int

您可以使用cppinsights.io来检查这一点:

代码语言:javascript
运行
复制
short a = 1;
short b = 2;
auto c = a + b;  // c is int

演示:https://cppinsights.io/s/68e27bd7

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71842556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档