C语言关于循环上的一点小问题,请把过程说明一下,在线等答案,谢啦

来源:百度知道 编辑:UC知道 时间:2024/05/29 15:48:32
#include<stdio.h>

void fun(int*n)
{
while((*n)--);
printf("%d",++(*n));
}

main()
{
int a=100;
fun(&a);
}
运行结果为0,怎么得来的?

while((*n)--);
循环体是空语句。
循环条件 *n > 0, a=100 进入,不断减1,直到 *n =0 退出循环。
因为 *n-- 是后减减,退出循环后要再减1,变 -1

printf("%d",++(*n)); 前加加, -1 加 1 变 0,打印 0。

运行结果为0,这样得来的。

你这是要做什么的

while((*n)--);//这里加一分号??那不是什么也没做吗
但要是下面的话,又是死循环
while((*n)--)
printf("%d",++(*n));

楼上说的有道理。抛开这一切,假设没问题,来解析这个循环,最后一次循环是(*n)--==1,然后*n==0,再次运行while((*n)--)时,条件为假,退出循环,此时(*n)==-1,再对*n进行自加运算,++(*n)==0,结果就是这么出来的。

应该去掉分号