C++学习中的编译器报错
1.
for(int i=0;i<sizeof(res)/sizeof(res[0]);i++){cout<<res[i]<<endl;
}
报错:comparison of integer expressions of different signedness: 'int' and 'long long unsigned int' [-Wsign-compare]
意思大致是int类型的无符号与有符号类型不能比较:sizeof()返回的值是无符号类型的,而int是有符号类型的:当两者比较时i会转变为一个无符号数计算,有发生溢出的风险。
在比较时编译器自动进行的转换:
有符号与无符号比较:有符号数会转换成无符号数来进行比较(如int 与 unsigned int 比较,int 转换成 unsigned int)。
有符号与非无符号数比较:非无符号转化成有符号(如int 与 unsigned char比较,unsigned char 转换成 int)。
无符号与非有符号数比较:非有符号转化成有符号(如unsigned int 与 char比较,char 转换成 unsigned int)。
解决方法:
1.把无符号数转变为有符号数,可使用强制类型转换,在sizeof()前加(int);
2.把有符号数转变为无符号数,可以在定义时把int i换成unsigned int i;
2.
报错:warning: unused variable ‘x’ [-Wunused-variable]
意思是定义的变量未使用
解决方法:
1. 该变量定义了不使用留着干嘛!果断直接删掉
2.在变量前加(void)比如:int x;//定义变量x,(void)x;//瞒过编译器
3.
报错:==42==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6020000001e0 at pc 0x00000034be3a bp 0x7ffd608eb800 sp 0x7ffd608eb7f8
后面一大堆报错代码我就不复制粘贴了,总而言之就是数组下标越界,以下是报错代码
while(index<nums.size()){while(nums[index]==1&&index<nums.size()){//错误点calculate++;index++;} if(calculate>conclusion){conclusion=calculate;} calculate=0;if(nums[index]!=1&&index<nums.size()){//错误点index++;}
}
在看到报错代码后,我也知道要加一个判断条件防止下标越界,就加在了数组操作的后面,结果还是报错,后来加到前面后才解决:
while(index<nums.size()){while(index<nums.size()&&nums[index]==1){//先判断下标是否越界,再对数组元素进行操作calculate++;index++;} if(calculate>conclusion){conclusion=calculate;} calculate=0;if(index<nums.size()&&nums[index]!=1){//先判断下标是否越界,再对数组元素进行操作index++;}
}
原因:
编译器根据运算先后顺序读取,对于&&运算符两边条件,编译器从左向右读取,若左边条件不满足,则直接false,不会向后读取,
当数组越界时会直接报错,不会再读取后面的判断条件,所以必须先加判断条件,再对数组进行操作
C++学习中的编译器报错相关推荐
- 《一起学习rgbdSLAM》中g2o部分报错的问题
<一起学习rgbdSLAM>中g2o部分报错的问题 在高博的<一起学习rgbdSLAM>第六讲中使用到了g2o工具.但是由于版本问题,按照高博的写法来编写代码在编译过程中会报错 ...
- 关于Visual Studio 中“scanf”输入报错的解决方法
有很多初次接触VS的同学会发现,当我们在写完一段代码,代码中用到scanf输入变量时,在调试编译的过程中就会出现错误: warning C4996: 'scanf': "This funct ...
- php的old函数,laravel单元测试之phpUnit中old()函数报错解决
php 的 laravel单元测试之phpUnit中old()函数报错解决 前言 最近在做laravel单元测试.遇到了一个问题: 当添加的view里面使用old()函数时就会报错,正常url访问没问 ...
- Python中调用FRED报错ValueError: time data 'fred' does not match format '%Y-%m-%d'
Python中调用FRED报错ValueError: time data 'fred' does not match format '%Y-%m-%d' 小白一枚,刚学习python调用FRED等数据 ...
- python中unexpected indent报错的解决办法
python中unexpected indent报错的解决办法 在我们初步学习pyton的时候,由于对python语言的学习掌握不充分,则会导致所编写的代码,运行时候报错.比如,容易报错的unexpe ...
- anconda安装后命令行中安装tensorflow报错
现象 anconda安装后命令行中安装tensorflow报错 pip install --upgrade --ignore-installed tensorflow-gpu Building wh ...
- K.O. -------- Eclipse中Maven的报错处理
----------------------siwuxie095 K.O. -------- Eclipse 中 Maven 的报错处理 1.报错一: A 'Maven Build' configur ...
- python无法启动该程序因为计算机中丢失_python报错:无法启动此程序,因为计算机中丢失...
原标题:python报错:无法启动此程序,因为计算机中丢失 python报错:无法启动此程序,因为计算机中丢失api-ms-win-crt-runtime-|1-1-0.dll api-ms-win- ...
- Navicat 远程连接docker容器中的mysql 报错1251 - Client does not support authentication protocol 解决办法
Navicat 远程连接docker容器中的mysql 报错1251 - Client does not support authentication protocol 解决办法 1).容器中登录my ...
最新文章
- solr5.3.1 集成IK中文分词器
- 《黑客秘笈——渗透测试实用指南》—第2章2.4节Web应用程序的扫描
- PHP单元测试使用手册
- 性能测试组件CodeBenchmark V2发布
- 人力资源经理的选择(转载)
- 如何避免内存泄漏?(C++)
- 【概率论】边缘分布和联合分布
- html中table美化,漂亮的css table样式
- HTTP 412状态码
- Spire.Office for Java 7.10.FIX[7.9.9]-全新版
- 【面试题】数字转成汉字形式
- 插值法(最邻近,双线性,双三次),图像放缩 python实现
- 阿里云云开发平台的创建与部署
- 走近棒球运动·芝加哥小熊队·MLB棒球创造营
- 【vscode插件集】学前端一年,珍藏的 40个 vscode 插件
- CGroup的原理和使用
- 攻防世界高手进阶区 ——forgot
- 流利说:通过数据分析评估获客效率
- 使用nginx临时搭建rtmp服务器
- springboot+mybatis+Oauth2 +vue 框架实现登录认证
热门文章
- matlab 漫游小镇_2019台湾新玩法——漫游小镇
- T300最长递增子序列
- vnc连接云主机,vnc连接云主机怎么连接,有哪些好用的软件
- 【Unity】Entities 1.0 学习(二):调试工具
- 3个分辨胀气肠绞痛的方法,你学会了吗?
- 2021高考成绩查询倒计时,2021年高考倒计时时间
- 网页中嵌入任意web字体解决方案
- 以太坊地址和公钥_以太坊地址是什么
- MPPDB各组件介绍
- cnKiTTY 0.76.0.13.1—KiTTY 0.76.0.13中文版本简单说明~~