for循环一般都是判断条件,我们都能够轻车熟路的进行判断,但是,有时候越容易的地方越容易被忽略,从而造成判断失误,比如下边的题:
下面for语句执行时的循环次数为()
int i, j;
for (i = 0, j = 5; i = j;)
{
cout << i << " " << j << endl;
i++;
j--;
}
选项:
A:0
B:5
C:10
D:无限
先别看下边的解析,你觉得答案会是哪个选项呢?以及运行的最终结果是啥?欢迎留言,看你的答案会是什么?
下边是整个题的解析:
首先,先看程序在c++中的运行结果:
#include <iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
int i, j;
for (i = 0, j = 5; i = j;)
{
cout << i << " " << j << endl;
i++;
j--;
}
return 0;
}
解析:
陷阱:此题的判断语句是一个赋值语句,容易被忽略,可能一扫,你会看成是“==”等号来进行判断(平常for都是判断语句)
执行过程:此题的判断语句是一个赋值语句,转换为判断语句即为:(1)首先指向赋值语句i=j;(2)判断条件即为i的值是否为真,即是否为零,非零则真。
故执行过程为如下,整个程序的过程即是j从5依次递减到0结束,所以会执行5次
运行结果: