c++ - for循环中超过2个条件?
问题描述
想知道是否有办法在 for 循环中比较 3-4 个条件?有没有办法只用一个 for 循环来做到这一点,或者我需要在循环中添加一个 if 语句来控制不打印 91 - 96?
我尝试添加一个初始条件,在它们周围和它们周围都加上括号,但似乎无法让它打印超过 90 并在 97 处拾取。
for (int cntr = 65; cntr >= 65 && cntr < 91 || cntr > 96 && cntr < 122; cntr++)
for (int cntr = 65; cntr < 91 || cntr > 96 && cntr < 122; cntr++)
尝试在不显示 90 到 96 的情况下打印 65 到 122 的 ASCII 字符。如果可能的话,试图将其全部放在一个 for 循环中。
解决方案
正如其他人所指出的,中心条件是一个break
条件。由于您希望在一个循环中完成所有操作,因此您不想在到达cntr == 91
.
这是一种在一个循环中巧妙地完成它的方法(C++ 风格):
for (char cntr = 65; cntr < 123; cntr++)
{
if ( cntr == 91 ) // skips the parts that you don't want
cntr = 97;
std::cout << cntr << std::endl;
}
更一般地说,有时您可能在一个循环中有多个真正的中断条件,但最好将它们中的一些/大部分保留在 for 循环的第一行之外,即。 for ( ... ; ... ; ... )
,因为它是不必要的,而且通常更难阅读。您可以在循环开始时编写一个中断条件(即第 2 行):
for ( i = 0; break_condition_1; ++i)
{
if ( break_condition_2 || break_condition_3 )
break;
// loop code
}
推荐阅读
- java - 登录JDK11 HttpClient
- javascript - Window.open() 没有我调用函数的 url 路径
- haskell - Stack.yaml 与 package.yaml 用于添加依赖项
- python - 使用 Python 字符串格式更改列表大小
- html - 由于网页对窗口大小的解释不正确,媒体查询失败
- c++ - C ++写入具有受保护内存的进程
- php - 使用 Android Developer、PHP 和 MySQL 的 Android 应用程序给出错误:org.json.JSONException: No value for status
- apache-spark - Spark 广播变量的生命周期
- x86 - (ATA PIO) 从端口读取垃圾
- python-3.x - 选择部分行值