这个程序为什么输出结果为-2-1?

来源:百度知道 编辑:UC知道 时间:2024/05/11 05:49:45
main()
{
int i=-2;
while(i)
printf("%d",i++);
}
不是因为i<0,就不执行循环,然后输出的结果为-1吗?或者直接不执行printf,直接无结果,因为while为假,不执行其下语句?谢谢了!
一楼的回答太简单了,我就是不明白循环的细节,能说下吗?谢谢了!补充一个:
#include <stdio.h>
void main()
{
int i=-2;
while(i++)
scanf("%d",i);
}
这个怎么循环的,能一起说出来吗,加分的!!

你的第一个程序一楼的已经回答了,就是那么解释的。
第二个循环:
首先,i=-2是非零,满足循环条件。执行循环语句。但是执行循环语句之前先执行一次i++,既i的值在执行循环语句之前已经是-1了。第一次循环之后输出是-1。然后i=-1又非零,又执行循环,但同样在执行之前i因为执行了判断语句而变为0。结果接着输出为0。然后再执行判断语句,但是i=0,不执行结果,然而由于执行了判断语句,i的值最后变为了1只是程序上没有显示出来。

C/C++下非0表示真,所以结果为-2-1

第一个程序,while循环,先判断()里面的值,因为i=-2,由于i!=0,所以值为真,输出一个-2,然后i++,i=-1,i!=0,所以值还为真,输出-1,然后再i++,i=0,判断,值为假,所以不执行循环

第二个,应该就是二楼说的那样,不过,我把程序运行了一下,输出个-10,不知道是为什么