【发布时间】:2020-09-28 06:04:49
【问题描述】:
为什么下面的代码给出正确的输出
#include <iostream>
#include <string>
using namespace std;
int main()
{
int max=0;
string k ="hello";
if(k.length()>max){
max = k.length();
}
cout<<max;
}
但下面的代码没有?
#include <iostream>
#include <string>
using namespace std;
int main()
{
int max=-1;
string k ="hello";
if(k.length()>max){
max = k.length();
}
cout<<max;
}
【问题讨论】:
-
整数提升可能存在一些问题
-
在文档中查看
k.length()返回的类型,然后检查将这种类型与int(max的类型)进行比较时会发生什么 -
-1转换为unsigned的值会产生类似于正 40 亿的值。你不是在比较负数!
标签: c++