首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >警告C26451算术溢出:使用运算符'-‘

警告C26451算术溢出:使用运算符'-‘
EN

Stack Overflow用户
提问于 2020-11-10 11:40:04
回答 1查看 753关注 0票数 1

我不明白为什么这个问题会被标记出来:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
InitAssignmentCell(iNumRows - 1, strDescription, IMG_UNCHECKED, static_cast<LPARAM>(iNumRows - 1));

该方法的定义是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
InitAssignmentCell(int iRow, CString strAssignment, int iCheckState, LPARAM lParam)

最后一个参数是LPARAM。然而,我看到了一些诡计:

警告C26451算术溢出:对4字节值使用运算符'-‘,然后将结果转换为8字节值。在调用运算符“-”之前将值转换为更大的类型,以避免溢出(io.2)。

我不明白这一点,因为iNumRowsint类型的。

我已经看到了类似的答案here,我的直觉是,这是一个错误的警告。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-10 11:46:10

来自MSVC静态分析器的C26451警告是非常迂腐的。它警告您,您可能假设升级是在演员之前自动执行的(但它不是)。

若要使警告保持沉默,请在算术之前执行强制转换。因此,与其:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
InitAssignmentCell(iNumRows - 1, strDescription, IMG_UNCHECKED, static_cast<LPARAM>(iNumRows - 1));

使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
InitAssignmentCell(iNumRows - 1, strDescription, IMG_UNCHECKED, static_cast<LPARAM>(iNumRows) - 1L);

您并不真正需要L (或64位构建的LL )后缀,但它向未来的读者表明您知道自己在做什么。一个更精确(但丑陋)的常量规范将是static_cast<LPARAM>(1)

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

https://stackoverflow.com/questions/64775688

复制
相关文章
C语言 | 学习使用算术运算符
解题思路:算术运算符按操作数个数可分为一元运算符和二元运算符。一元运算符的优先级一般高于二元运算符。一元运算符:+(正号)、-(负号)、++(增1)、--(减1)。二元运算符:+(求和)、-(求差)、*(求积)、/(求商)、%(求余)。
小林C语言
2021/03/07
4990
C语言 | 学习使用算术运算符
Access算术运算符
大家好,前面介绍了查询设计的基本步骤,本节开始将介绍查询条件和字段表达式中涉及的运算符、通配符、函数等知识。
无言之月
2020/03/30
1.4K0
【mysql】算术运算符
算术运算符 算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行加(+)、减(-)、乘(*)、除(/)和取模(%)运算。 [请添加图片描述] 1. 加法与减法运算符 SELECT 100, 100 + 0, 100 - 0, 100 + 50, 100 + 50 * 30, 100 + 35.5, 100 - 35.5 FROM DUAL; [在这里插入图片描述] 在SQL中,+没有连接的作用,就表示加法运算。此时,会将字符串转换为数值(隐式转换) SELECT 100
兮动人
2022/03/02
1.2K0
Python - 算术运算符
算术运算符 运算符 作用 + 加 - 减 * 乘 / 除 // 整数除 ** 乘方 % 模 + 注意:字典、集合不能用 + 哦 >>> 1+1 2 >>> 1.0+1 2.0 >>> "2"+"123" '2123' >>> True+True 2 >>> (1,2,3)+(4,5) (1, 2, 3, 4, 5) >>> [1,]+[2,3,] [1, 2, 3] - >>> 1-1 0 >>> 1.0-1 0.0 >>> "2"+"123" '2123' >>> True-True 0
小菠萝测试笔记
2021/08/06
2710
Python 的算术运算符
所谓算术运算,是指初等数学中常见的计算,如加、减、乘、除、乘方等。在数学上,每种计算都使用规定的符号实现,形式上简洁明了,Python 语言也继承了此光荣传统。表3-2-1中列出了 Python 实现算术运算所使用的运算符。
老齐
2021/09/15
2.3K0
JavaScript 算术运算符、赋值运算符
1、算术运算符: +(加)、 -(减)、 *(乘)、 /(除)、 %(求余) 2、赋值运算符:=、 +=、 -=、 *=、 /=、 %= 3、条件运算符:==、===、>、>=、<、<=、!=、&&(而且)、||(或者)、!(否)
Devops海洋的渔夫
2019/05/31
1.2K0
java算术运算符(二)
在Java中,算术运算符的优先级是固定的。具体来说,乘法运算符和除法运算符的优先级高于加法运算符和减法运算符,取模运算符的优先级与乘法运算符和除法运算符相同。如果有多个运算符,优先级高的运算符会先执行。如果两个运算符的优先级相同,则从左到右依次执行。
堕落飞鸟
2023/04/03
3680
C语言 | 算术运算符
这道理放在C语言学习上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。
小林C语言
2021/03/10
1.1K0
Python/算术运算符详解
当我们使用Python语言时,总是会使用到Python中各种各样的算术运算符,因此作者我写了一篇专门关于python语言的算术运算符详解。
用户10788736
2023/10/16
6260
Python/算术运算符详解
Go-运算符-算术运算符
Go 中的算术运算符用于执行基本的算术操作,例如加、减、乘、除等。本文将介绍 Go 中的算术运算符及其使用方法。
堕落飞鸟
2023/04/20
1700
java算术运算符(一)
Java中有五种算术运算符,分别为加法运算符(+)、减法运算符(-)、乘法运算符(*)、除法运算符(/)和取模运算符(%)。这些运算符可以用于任何Java数据类型,包括整数、浮点数和字符。
堕落飞鸟
2023/04/03
3840
Java的算术运算符
加法运算符用于将两个数相加。在Java中,加法运算符还可以用于将字符串连接起来。下面是一个示例:
玖叁叁
2023/05/06
2370
【Python】运算符 ( 算术运算符 | 赋值运算符 )
文章目录 一、Python 运算符 1、算术运算符 2、赋值运算符 一、Python 运算符 ---- 1、算术运算符 算术运算符 : 加 : + 减 : - 乘 : * 除 : / 取整除 : // , 该运算只返回商的整数部分 ; 取余 : % 指数 : ** , a**b 的含义是 a 的 b 次方 , 2 ** 3 = 8 代码示例 : 加法运算 : print("1 + 2 = ", 1 + 2) 减法运算 : print("1 - 2 = ", 1 - 2) 乘法运算 : print("1 *
韩曙亮
2023/04/07
8300
【Python】运算符 ( 算术运算符 | 赋值运算符 )
sql算术运算符_SQL运算符教程–按位,比较,算术和逻辑运算符查询示例
At its core, the internet and all its applications are just data.
用户7886150
2020/11/29
9190
Python学习-算术运算符,赋值运算符
算术运算符   常见的算术运算符有 :    +     加法运算符  print(1 + 2); // 3 print('1' + '2'); //12   不仅可以进行2个数字的相加,还可以连接2个字符串  -     减法运算符 print(4 - 2) // 2 print(4 - 12) // -8  *     乘法运算符 print(5 * 6); //30  /     除法运算符(分母不可以为零) print(5 / 2); //2.5 print(5 /
py3study
2020/01/19
4720
Java学习之算术运算符
Java 中的算术运算符主要用来组织数值类型数据的算术运算,按照参加运算的操作数的不同可以分为一元运算符和二元运算符。
李小白是一只喵
2022/03/21
6370
Java学习之算术运算符
python中的算术运算符
另外:  在 Python 中 * 运算符还可以用于字符串,计算结果就是字符串重复指定次数的结果
用户7886150
2020/11/27
7960
PHP- 运算符-PHP 的算术运算符
在上面的示例中,我们定义了三个变量 $x、$y 和 $z。然后使用加法运算符将 $x 和 $y 的值相加,并将结果赋给变量 $z。最后,使用 echo 语句输出变量 $z 的值,即 30。
堕落飞鸟
2023/04/26
8580
Python中的/和//算术运算符
通常C/C++中,"/ " 算术运算符的计算结果是根据参与运算的两边的数据决定的,比如:
py3study
2020/01/15
1.1K0
C++ 炼气期之算术运算符
编写程序时,数据确定后,就需要为数据提供相应的处理逻辑(方案或算法)。所谓逻辑有 2 种存在形态:
一枚大果壳
2022/08/23
5590
C++ 炼气期之算术运算符

相似问题

警告C26451:算术溢出

63

如何避免Microsoft C26451 (算术溢出)警告

1352

警告C26451:算术溢出(减去两个ints时)

11

C26451算术溢出访问CStringArray中的项

14

数字乘法时出现算术溢出警告

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文