程序段 int k=0; while(k=1) k++; while循环体执行的次数为无限次。
理由:在执行while(k=1)时,会先执行赋值语句,令 k 的值等于 1,然后再判断while的循环条件,此时 while(k=1)相当于 while(1),循环条件始终为真,无限循环执行。
再举一个与上面条件差不多的例子:
#include
int main(int argc, char *argv[])
{
int k=0;
while(k=1)
{
++k;
printf("%d\n",k);
};
return 0;
}
控制台会不断输出2,如下图:
扩展资料:
do-while循环语句
一般形式如下:do 语句; while(表达式);
for循环语句
一般形式如下:for ( [表达式 1]; [表达式 2 ]; [表达式3] )
其中:
表达式1:一般为赋值表达式,给控制变量赋初值;
表达式2:关系表达式或逻辑表达式,循环控制条件;
表达式3:一般为赋值表达式,给控制变量增量或减量;
语句:循环体,当有多条语句时,必须使用复合语句。
参考资料:百度百科-C语言循环控制语句
A.无限次
#include
int main(int argc, char *argv[])
{
int k=0;
while(k=1)
{
k++;
printf("%d\n",k);
};
return 0;
}
你会发现一直输出:2
原因:
k=1 是一条赋值语句,令 k 的值等于 1。语句 k = 1 的结果是 永远是 1 , while(k=1) = while(1) ,是死循环,执行无限次
k == 1 才是一条逻辑语句,判断 k 的值是否等于1 。如果 k 的值等于 1 , k==1 的结果是1,否则是0。
试题解析循环条件是" k=1",该表达式恒为真,所以程序构成死循环 答案选 A。
A
因为循环条件 k=1 一直为真。
赋值语句的值为其等号右侧的值,也就是说 k=1 的值为1,也就是为真。
一样的如果k=2呢循环了几次