为什么不是两个** C++
来源:百度知道 编辑:UC知道 时间:2024/06/01 07:04:11
#include <stdio.h>
main()
{int x=2;
do
{printf("*");x--;}
while(x>=0);
}
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,应该输出三个