直接上代码:

#include <iostream>
#include <vector> using namespace std; int main()
{
vector<string> vctStr;
vctStr.push_back("Hello");
vctStr.push_back("World"); cout<<"VctSize: "<<vctStr.size()<<endl; // VctSize: 2 int iType = -1; if (iType >= vctStr.size() )
{
cout<<"Amazing ……"<<endl; // -1 竟然大于2 ?!
cout<<"iType: "<<iType<<", size: "<<vctStr.size()<<endl; } return 0;
}

执行结果:

欧耶,-1 >=2 就这样出现了……

我一開始认为计算机是不是脑残了,会有这样的结果?

我怀疑是 vector.size 的返回值有问题,查文档,发现原来返回类型是 size_type  也就是 unsigend int, 这下子。知道是怎么一回事了。

这样測试,结果就明了了,再上代码:

#include <iostream>
#include <vector> using namespace std; int main()
{
vector<string> vctStr;
vctStr.push_back("Hello");
vctStr.push_back("World"); cout<<"VctSize: "<<vctStr.size()<<endl; // VctSize: 2 int iType = -1; if (iType >= vctStr.size() )
{
cout<<"Amazing ……"<<endl; // -1 竟然大于2 ?!
cout<<"iType: "<<iType<<", size: "<<vctStr.size()<<endl;
cout<<"Here!: iType:"<<(unsigned int)(iType)<<endl; // 新加一行信息打印, 看到这里就懂了。 } return 0;
}

上图:

计算机并没有脑残,仅仅是在比較的时候,默认做了类型转换,将负数进行了转换

即 if (iType >= vctStr.size() ) 实际上应该是   if ( (unsigned int)iType >= vctStr.size() )。 这种话,肯定是大于2的了。



为此我还专门上网查找了关于 负数在计算机中的存储问题。看完之后,明确了怎样求一个常见数据类型的最大值问题

再上代码:

#include <iostream>
#include <vector> using namespace std; int main()
{
int i = -1;
cout<<"unsigned int max: "<< (unsigned int)(i) <<endl;
cout<<" int max: "<< (unsigned int)(i)/2<<endl; return 0;
}

图:

记录一个奇妙的Bug, -1 &gt;= 2 ?的更多相关文章

  1. FIREDAC(DELPHI10 or 10.1)提交数据给ORACLE数据库的一个不是BUG的BUG

    发现FIREDAC(DELPHI10 or 10.1)提交数据给ORACLE数据库的一个不是BUG的BUG,提交的表名大小写是敏感的. 只要有一个表名字母的大小写不匹配,ORACLE就会认为是一个不认 ...

  2. salesforce零基础学习(一百一十五)记一个有趣的bug

    本篇参考:https://help.salesforce.com/s/articleView?language=en_US&type=1&id=000319486 page layou ...

  3. 一个iOS6系统bug+一个iOS7系统bug

    先看实际工作中遇到的两个bug:(1)iPhone Qzone有一个导航栏背景随着页面滑动而渐变的体验,当页面滑动到一定距离时,会改变导航栏上title文本的颜色,但是有一个莫名其妙的bug,如下:

  4. 记录一个bootstrap惨痛的错误

    记录一个bootstrap的错误,这个错误因为我删除了一个class就导致了页面上显示的错误,这是一个惨痛的教训,特此记录,提醒自己在做前端的修改时,一定要慎之又慎.如果真的要做改动,改完之后也要测一 ...

  5. step_by_step_记录一个javascript字符串处理问题

    记录一个javascript字符串处理的问题 这一天下班,技术QQ群里的大神提出了一个问题,带着问题去思考. ? '---9890.999008-555555-55555555----' 对于这样的字 ...

  6. pycharm下: conda installation is not found ----一个公开的bug的解决方案

    pycharm  conda installation is not  found ----一个公开的bug的解决方案 pycharm+anaconda 是当前的主流的搭建方案,但是常出现上述问题. ...

  7. 【Todo】C++类 & 通用面试题分析记录 & 最难的bug

    1. the most difficult bug u fixed and how u solved this problem.. 解决过很多疑难bug.最困难的分为两类.一类是并发.多线程类的,因为 ...

  8. 一个神奇的bug:OOM?优雅终止线程?系统内存占用较高?

    摘要:该项目是DAYU平台的数据开发(DLF),数据开发中一个重要的功能就是ETL(数据清洗).ETL由源端到目的端,中间的业务逻辑一般由用户自己编写的SQL模板实现,velocity是其中涉及的一种 ...

  9. 记录一个前端bug的解决过程

    人在江湖飘,哪能不挨刀. 我挨了重重一bug.严格来讲这可能是我职业生涯以来的首个悲惨经历,因为凭我的知识储备和经验,基本上任何可重现的bug都是可解的.然而这个bug却困扰了我三个月之久,它具有以下 ...

随机推荐

  1. 《Java编程思想》笔记 第六章 访问权限控制

    1.编译单元 一个 编译单元即 .java 文件 内只能有一个 public 类  且该文件名必须与public 类名 完全一致. 编译单元内也可以没有public类 文件名可随意. 2. 包:库单元 ...

  2. resin + eclipse 遇到的问题

    1. 编译jsp报错: com.caucho.jsp.JspParseException: javac compiler is not available in Java(TM) SE Runtime ...

  3. 2017/3/7 值得"纪念"的错误

    使用viewpager和fragment做个能左右滑动的效果,结果怎么弄怎么有问题,先是怀疑什么viewPager维护刷新内部fragment什么的,又是在FragmentPageAdapter的ge ...

  4. win上安装Redis并将其设置为服务

    win上安装Redis并将其设置为服务 redis下载地址:https://redis.io/ 或者在下面的地址下载 https://github.com/zhangxy1035/redisDownl ...

  5. [libgdx游戏开发教程]使用Libgdx进行游戏开发(9)-场景过渡

    本章主要讲解场景过渡效果的使用.这里将用到Render to Texture(RTT)技术. Libgdx提供了一个类,实现了各种常见的插值算法,不仅适合过渡效果,也适合任意特定行为. 在本游戏里面, ...

  6. 【转+整理】jenkins与SonarQube集成

    一.SonarQube 我的理解是,SonarQube就是一个对代码进行分析的平台,其功能可以通过插件扩展.支持多种语言,也支持静态代码检查.发现潜在bug等. 以下是参考信息: 维基百科:https ...

  7. 洛谷P2419 [USACO08JAN]牛大赛Cow Contest

    对于一个能够确定名次的点,可以注意到,对于该点,入度和出度的数量加起来等于N-1(这样还是不够准确的确切的说是,能够到达这个点的数量和这个点能够到达的数量的和 floyd不仅可以求两个点之间的最短路径 ...

  8. 闪迪U3利用工具U3-Pwn

    闪迪U3利用工具U3-Pwn   闪迪U3是闪迪公司为Sandisk Cruzer系列U盘提供的一个功能.该模块支持数据加密和CD启动功能.U3-Pwn就是针对U3的一个利用工具.渗透测试人员可以通过 ...

  9. 浅谈Java中final,finalized,finally

    final: final可以让你控制你的成员.方法或者是一个类是否可被覆写或继承等功能,这些特点使final在Java中拥有了一个不可或缺的地位,也是学习Java时必须要知道和掌握的关键字之一. fi ...

  10. 【数论】【素数判定】CODEVS 2851 菜菜买气球

    素数判定模板. #include<cstdio> #include<map> using namespace std; ],ans=-,l,r,n,sum[]; bool is ...