#include <iostream>
#include <string>
#include <set>
#include <vector>
using namespace std;
class Solution
{
public:
int fun1(string s)
{
int s_len = s.length();
for (int i = 0; i < s.length() - 1; i++)
return 1;
return 2;
}
int fun2(string s)
{
int s_len = s.length();
for (int i = 0; i < s_len - 1; i++)
return 1;
return 2;
}
};
int main()
{
string s = "";
Solution solution;
cout << solution.fun1(s) << endl;
cout << solution.fun2(s) << endl;
return 0;
}
c++ string在循环中直接调用length()与定义变量后间接调用length()结果不同
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- _GX_ 2022-02-06 17:40关注
s.length()
返回值类型是无符号的整型(比如std::size_t
,下面以std::size_t为例),返回值是0
在计算表达式s.length() - 1
时,会将1进行整型提升为std::size_t
,结果是std::size_t(-1)
,注意是无符号整型
当比较i < s.length() - 1
时,i
的值也会被整型提升为std::size_t
,所以当i=0
时,std::size_t(0) < std::size_t(-1)
结果为真,循环执行一次,因此fun1()
返回1
而fun2()
中,s_len = 0
, 而且i < s_len - 1
都是有符号整型int
类型,不存在整型提升,因此int(0) < int(-1)
为假,跳过循环,fun2()
返回2本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用
悬赏问题
- ¥100 有偿,谁有移远的EC200S固件和最新的Qflsh工具。
- ¥15 找一个QT页面+目标识别(行人检测)的开源项目
- ¥15 有没有整苹果智能分拣线上图像数据
- ¥20 有没有人会这个东西的
- ¥15 cfx考虑调整“enforce system memory limit”参数的设置
- ¥30 航迹分离,航迹增强,误差分析
- ¥15 Chrome Manifest扩展引用Ajax-hook库拦截请求失败
- ¥15 用Ros中的Topic通讯方式控制小乌龟的速度,走矩形;编写订阅器代码
- ¥15 LLM accuracy检测
- ¥15 pycharm添加远程解释器报错