string.length()与-1比较为什么会出现匪夷所思的结果
今天调试程序发现了个匪夷所思的事情,-1与string.length()比较永远是-1大,看下面代码
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str;
str="";
int num=-;
//int len=str.length();
if(num<str.length())
{
cout<<"-1<str.length()";
}
else
{
cout<<"-1>=str.length()";
}
return ;
}
输出的结果是:-1>=str.length(),这看起来似乎很是离奇,改成下面的代码看看:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str;
str="";
int num=-;
int len=str.length();
if(num<len)
{
cout<<"-1<str.length()";
}
else
{
cout<<"-1>=str.length()";
}
return ;
}
这回输出的是-1<str.length()
这两段程序看似应该输出一样的结果,可是实际却不是,这不禁让我想起来之前自己写的一篇博客,C++中的隐式类型换http://www.cnblogs.com/bewolf/p/4358006.html
一查,果然是这样的,str.length()的返回值是unsigned int,如果直接与-1比较的话,比较的过程int会被隐式转化成unsigned int,所以-1会变成很大的数,当然“-1就比3还要大了”,而如果将str.length()赋值给int类型的变量,那么会像被赋值的类型进行转换,所以str.length()会被转换成int类型,到时候就是-1和一个int类型的变量比较,结果就是我们想要的正常结果了。
string.length()与-1比较为什么会出现匪夷所思的结果的更多相关文章
- js报错: Uncaught RangeError: Invalid string length
在ajax请求后得到的json数据,遍历的时候chrome控制台报这个错误:Uncaught RangeError: Invalid string length,在stackoverflow查找答案时 ...
- string length() 方法注意点
突然意识到string length() 是跟文件的字符编码相关的 测试了下, 果然如此: 对于常见字, 结果是一样的, System.out.println("T中国123".l ...
- String.length()和String.getBytes().length
1.字符与字节 抛出如下代码: public static void main(String[] args) { String str = "活出自己范儿"; System.out ...
- exception PLS-00215: String length constraints must be in range (1 .. 32767)
exception PLS-00215: String length constraints must be in range (1 .. 32767) CreationTime--2018年8月 ...
- 【js】 Uncaught RangeError: Invalid string length
今天项目比较催的比较着急,浏览器总是崩溃,后来报了一个Uncaught RangeError: Invalid string length(字符串长度无效) 的错误. 在ajax请求后得到的json数 ...
- int 与 string::length()
今天在代码中遇到这样的问题 ; while (nStart < strTemp.length()) { ... } 感觉自己写的逻辑没有错误,但是,代码执行结果就是不对,结果单步调试到该处发现, ...
- 关于vector.size()和string.length() 的返回类型 size_type
今天写循环的时候碰到一个问题,发现:string.length()返回的类型是size_type.它是unsigned 类型.string::size_type它在不同的机器上,长度是可以不同的,并非 ...
- 控制台提示“Invalid string length”的原因
控制台提示“Invalid string length”,浏览器直接卡掉,是为什么呢? 答:因为在写嵌套循环时,定义的变量重名了,内层和外层用了同一个i变量. -THE END-
- Java for循环每次都通过list.size()和 string.length()获取大小是否消耗性能?
前言 有人说在for循环之前用一个局部变量先获取到list.size().str.length(),然后在for循环的判断条件里通过这个局部变量替换list.size().str.length()会节 ...
随机推荐
- 删除word文档中表格后的空行
处理办法为: 方法1:使上.下页边距数值缩小,从而使页面扩大能容纳下这一段落行. 方法2:光标处于最后段落行符号前,右键→段落→缩进和间距→间距→行距→固定值→设置值→1磅→确定.
- Aspose 数字和日期 设置
Microsoft Excel一个非常强大的功能就是使客户可以设置数字和日期的显示格式,众所周知数字可以显示为不同的值格式,包含:小数.货币.百分数.分数.账面价值等,同样地Aspose.Cells也 ...
- Week1 Team Homework #2 Introduction of team member with photos
小组成员介绍 组长:黄剑锟 11061164 组员:顾泽鹏 11061160 组员:周辰光 11061154 组员:龚少波 11061167 组 ...
- iOS VideoToolbox硬编H.265(HEVC)H.264(AVC):2 H264数据写入文件
本文档为iOS VideoToolbox硬编H.265(HEVC)H.264(AVC):1 概述续篇,主要描述: CMSampleBufferRef读取实际数据 序列参数集(Sequence Para ...
- 《Dive into Python》Chapter 4 笔记
自省:Python中万物皆对象,自省是指代码可以查看内存中以对象形式存在的其它模块和函数,获取它们的信息,并对它们进行操作.用这种方法,可以定义没有名称的函数,不按函数声明的参数顺序调用函数,甚至引用 ...
- 3036: 绿豆蛙的归宿 - BZOJ
Description 随着新版百度空间的下线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿. 给出一个有向无环的连通图,起点为1终点为N,每条边都有一个长度.绿豆蛙从起点出发,走向终点.到达每 ...
- c++ switch case
http://www.cnblogs.com/RealOnlyme/articles/2579628.html
- Codeforces Round #349 (Div. 1) A. Reberland Linguistics dp
题目链接: 题目 A. Reberland Linguistics time limit per test:1 second memory limit per test:256 megabytes 问 ...
- 解决Navicat Error: Missing required libmysql_d.dll
在Navicat(H:\Program Files (x86)\Navicat for MySQL)目录下找到libmysql_d.dll,复制到C盘:system/wow64文件夹下. 重新打开na ...
- LINQ——语言级集成查询入门指南(1)
本文主要是对语言级集成查询或简称为LINQ做一个介绍,包括LINQ是什么,不是什么,并对它在语言特性方面做一个简短的回顾,然后举一些使用LINQ的实际例子进行说明. 语言级集成查询是什么? 在我过去写 ...