Break语句不工作
Break statement not working
程序应该将name的字符数存储在变量str_length中(其中name <50个字符,以"。"结尾)我很困惑为什么这段代码只输出第一个字符,这意味着当I = 0时,对于诸如"Jonathan"这样的名字,它会跳出循环。它不应该解析整个字符串,直到找到"。",然后才从for循环中中断吗?
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
string name;
int str_length;
cout << "What's your name" << endl;
cin >> name;
for (int i = 0; i < 50; i++)
{
cout << name[i];
if (name[i] == '.')
str_length = i;
break;
}
cout << endl;
system("PAUSE");
return 0;
}
你有:
for (int i = 0; i < 50; i++)
{
cout << name[i];
if (name[i] == '.')
str_length = i;
break;
}
实际上是:
for (int i = 0; i < 50; i++)
{
cout << name[i];
if (name[i] == '.')
{
str_length = i;
}
break;
}
你想:
for (int i = 0; i < 50; i++)
{
cout << name[i];
if (name[i] == '.')
{
str_length = i;
break;
}
}
您在每个循环的末尾进行break
。
您在if
条件下缺少{}
。因此,break
在没有任何条件的情况下执行,因此循环在第一次迭代中退出。
这说明了即使在一行if语句中不使用大括号的危险。我怀疑你这样做了:
if (name[i] == '.')
str_length = i;
,然后再添加break
。如果你这样做了:
if (name[i] == '.') {
str_length = i;
}
如果在前面,那么在花括号内添加换行符是很自然的,这样就不会出现这个错误了。
相关文章:
- C++嵌套的 If 语句中,它无法按预期工作
- if-else 语句仅按特定顺序工作,我不知道为什么
- C++-循环中的If语句工作不正常
- switch-case语句如何在Arduino/C++中工作
- While循环和if/else语句工作不正常
- 我的 if 语句无法正常工作
- scanf() 语句中"%*[^n]"的格式字符串指示什么?分配抑制器 (*) 和否定扫描集 ([^) 如何协同工作?
- 如果带有字符数组的语句无法正常工作
- 为什么查找 + 插入的组合比单个插入语句工作得更快
- C 开关语句无法正常工作
- 返回指针的语句 - 解释它是如何工作的以及为什么
- C 如果与我期望的语句或操作员无法正常工作
- 为什么我的开关语句无法正常工作
- 我的 IF 语句中存在问题,否则无法正常工作
- If/Else 语句在 c++ 中无法正常工作
- 嵌套的If-else语句可能无法正常工作
- C++ 中的正则表达式语句未按预期工作
- C++ 如果 Else 语句无法正常工作
- Arduino 项目需要打印语句才能工作
- 简单的 if 和 else 语句无法正常工作