为什么不是两个** C++

来源:百度知道 编辑:UC知道 时间:2024/06/01 07:04:11
#include <stdio.h>

main()

{int x=2;

do

{printf("*");x--;}

while(x>=0);

}

首先,x初值是2.
第一遍循环,打印一个 * ,然后x--,x变为1。接着判断x>=0满足,继续循环;
第二遍循环,打印一个 * ,然后x--,x变为0。接着判断x>=0满足,继续循环;
第三遍循环,打印一个 * ,然后x--,x变为-1.接着判断x>=0不满足,退出循环。
所以,结果是三个 *

程序已在VC6.0下测试

你这个是要打印两个**是吧,因为这个是循环语句,循环一次就输出一个*,X=2,循环两次,就输出两个*

输出为***,即3个*

楼主你好

这是因为printf的优先级在--运算符之前,是先printf,然后再--的,那时判断退出了,所以比想象的多一个。

建议楼主不采用这样的技巧法编程,因为C编译器相当多,可能会碰到各个编译器的优先级不同的情况,而且这样也不是好的编程习惯,应该分开写比较好看清楚。

输出应该是三个*,因为do...while..语句先执行一次do语句。而x=2,即0~~2,应该输出三个