【发布时间】:2018-08-05 03:33:18
【问题描述】:
for(i=1;i=-1;i++)
if(i<5) break;
printf("%d\n",i);
我被要求编写以下代码的输出,我无法理解,因为第二个参数应该是一个条件,但这里是一个赋值,
output: -1
我不明白这是怎么可能的,所以我试着用代码做实验
int i=1;
while(i=-1)
{
printf("condition is true\n");
if(i<5) break;
}
printf("%d\n",i);
以下代码的输出是
output: condition is true
-1
谁能解释一下以上两个代码是如何工作的 以及如何将 while(i=-1) 评估为 TRUE??
【问题讨论】:
-
您确实知道使用
=进行赋值和使用==进行相等比较之间的区别吗?你也知道在 C 中所有非零都是 true,只有零是 false?break声明的作用是什么?如果有什么你不知道的,那就找一本好的初学者书籍,从头开始阅读。 -
是的,我知道其中的区别,但这是问的问题,但是当条件中给出 i=-1 时,是否将值分配给 'i' 然后评估为真?跨度>
-
条件为
i = -1。这将被完全评估,分配的结果是分配后的左侧,即分配后的the value ofi`,即-1,如果非零,则为真。跨度> -
应该发出警告
-
@Someprogrammerdude 感谢您花时间解释,谢谢。
标签: c for-loop while-loop conditional-statements