是即时继续
Is continue instant?
本文关键字:继续 更新时间:2023-10-16
在下面的两个代码片段中,根据编译或运行的速度,实际上有什么不同吗?
for (int i = 0; i < 50; i++)
{
if (i % 3 == 0)
continue;
printf("Yay");
}
和
for (int i = 0; i < 50; i++)
{
if (i % 3 != 0)
printf("Yay");
}
就我个人而言,在除了print语句之外还有很多内容的情况下,我一直在使用第一种方法来减少包含代码的缩进量。我想了一段时间,所以发现是时候问它是否真的有视觉以外的效果了。
回复Alf(我无法在评论中获得代码…)
对我的用法来说,更准确的是类似于"handleObjectMovement"函数的东西,它将包括
for each object
if object position is static
continue
deal with velocity and jazz
与相比
for each object
if object position is not static
deal with velocity and jazz
因此我没有使用返回。本质上"如果与此迭代无关,请继续"
行为是相同的,所以运行时速度应该是相同的,除非编译器做了一些愚蠢的事情(或者除非禁用优化)。
无法判断编译速度是否存在差异,因为这取决于编译器如何解析、分析和翻译这两种变体的细节。
如果速度很重要,请测量它。
如果您知道条件的哪个分支的概率更高,您可以使用GCC可能/不可能的宏
完全取消检查怎么样?
for (int t = 0; t < 33; t++)
{
int i = t + (t >> 1) + 1;
printf("%dn", i);
}
相关文章:
- 循环后如何继续阅读
- 我正在尝试使用 c++ 创建一个货币转换程序,我不知道如何继续
- C++:继续创建新的变量可以吗
- 如何继续读取不同功能中的文件,而不是从头开始再次读取文件?
- 在 c++ 中三元运算符中不允许继续(关键字)吗?
- C++ 如何暂停控制台输出,以便用户可以在继续之前阅读信息
- 循环不继续无法弄清楚为什么
- 附加到 gdb 会中断并且不会继续该过程
- C++ 在信号处理程序后继续执行
- 为什么我的Qt程序在断言失败后继续运行?
- 如何打印下一个字母直到 Z 并继续到 A?
- 超时后,线程睡眠不会继续执行
- 使用 ssh 重新连接到远程 Ubuntu 机器后,如何继续使用 gdb 调试 c++ 代码?
- 如何创建一个 while 循环,继续循环,直到在C++中输入'using streams'键?
- 失败后可以继续从流读取吗?
- 在构造函数中删除后继续执行
- 在程序继续C++时保持进程运行
- 继续运行程序而无需任何干预,直到要求退出为止
- while 循环 C++ 结束,但不继续到其余语句
- C++继续获取表达式必须具有类类型