gpt4 book ai didi

c++ - 这个输出的原因?

转载 作者:太空宇宙 更新时间:2023-11-04 13:27:16 26 4
gpt4 key购买 nike

我想找出错误输出的原因。它适用于从 0 到 10000 的所有值,除了值 ppp、pppp、qqq 和 qqqq。输出应分别为 -3、-4、3 和 4。但是在执行此代码时,输​​出分别为 -5、-5、5 和 6。谁能帮我解决这个问题?

#include<iostream>
using namespace std;
int main()
{
string a;
int x=0;
cin>>a;
for(int i=0;i<10000;i++)
{
if(a[i]=='p')
x=x-1;
if(a[i]=='q')
x=x+1;
}
cout<<x<<endl;
return 0;
}

提前致谢。

最佳答案

除非您输入至少 10,000 个字符长的字符串,否则您的代码具有未定义的行为。允许访问的字符串之外的唯一元素是 a[a.size()],它返回空字符 ('\0')。超出此范围的任何内容都是未定义的。

将循环更改为:

size_t len = a.size();
for (int i = 0; i < len; i++)

所以你不会超出字符串范围。

关于c++ - 这个输出的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32929748/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com