| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3186 人关注过本帖
标题:VISUAL STUDIO提示C26451,这是和vector最大容量相关吗?
取消只看楼主 加入收藏
wolfcan
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2021-12-9
结帖率:87.5%
收藏
已结贴  问题点数:20 回复次数:2 
VISUAL STUDIO提示C26451,这是和vector最大容量相关吗?
代码如下,但是VS在a+1处有波浪线,提示C26451,算术溢出: 使用 4 字节值上的运算符 * ,然后将结果转换到 8 字节值。在调用运算符 * 之前将值强制转换为宽类型可避免溢出(io.2)。请问哪里会涉及8字节的结果呢?难道是vector的数量初始化的数量是8个字节?请各位指教,谢谢。
程序代码:

int a=3;
std::vector<int> color(a+1);


搜索更多相关主题的帖子: 提示 容量 VISUAL 字节 vector 
2022-01-01 21:49
wolfcan
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2021-12-9
收藏
得分:0 
回复 2楼 rjsp
VS提示内容:C26451,算术溢出: 使用 4 字节值上的运算符 * ,然后将结果转换到 8 字节值。在调用运算符 * 之前将值强制转换为宽类型可避免溢出(io.2)。
*********************************分割线**************************************************
那我现在的理解是:变量a是int类型,是4个字节,数字1也是4个字节,而color(a+1)调用构造函数时要先将a+1转换为8字节的size_t类型,在这个过程中可能会出现溢出。
那么正确的写法是不是应该改成下面样子?谢谢
size_t a=3;
std::vector<int> color(a+static_cast<size_t>(1));


2022-01-02 23:18
wolfcan
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2021-12-9
收藏
得分:0 
回复 5楼 rjsp
谢谢。那为什么对于数字1不先转化成size_t呢?因为a现在是size_t,数字1是int类型,color(a+1)的时候应该是先进行a+1(这个过程是一个宽类型+一个宅类型,这二者谁进行类型转换呢?),然后再将相加结果转换为size_t类型吧?
2022-01-03 22:36
快速回复:VISUAL STUDIO提示C26451,这是和vector最大容量相关吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.063642 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved