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?
最佳答案
条件始终为真。因为赋值语句的值就是赋值。因此-1
为非零值,并且在c中将非零值视为true,因此它始终为true。
正确的用法是==
,它比较值并根据相等或不相等返回1
或0
。
所以在这里,当您执行i = -1
并放入while
循环条件时-归结为
while( -1 ){
...
/* break here */
}
由于
-1
在c中被视为true,因为它不为零-循环条件的值为true。这里给出
break
语句,这样该循环不会变成无限循环。关于c - 在C中用分号分隔的两个初始化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48975606/