while出毛病了?太抓狂了,T_T~~~
#include <stdio.h>int main()
{
int a = 0, n;
printf("\n input n: ");
scanf_s("%d", &n);
while (n--);
{
printf("%d", a++*2);
}
return 0;
}
我按f10调试,一步一步来,我输入8后,按一次f10,n就-1,但是黄色箭头就在while那里不动,按f10,n又-1.直到-1,然后a=1。没了,。。。。。
太心累了。
{:10_255:} 没问题啊,正常退出while 难道你死循环了? 本帖最后由 jhq999 于 2022-3-23 20:51 编辑
while (n--);
while (n--)
{
printf("%d", a++*2);
} 这个while(n--)没问题吗,,,, 你这上个问题也是 while循环后加 ; ba21 发表于 2022-3-23 20:33
没问题啊,正常退出while 难道你死循环了?
我的while加分号了{:10_262:} 大马强 发表于 2022-3-23 23:11
你这上个问题也是 while循环后加 ;
{:10_278:} a++*2其实就是考你操作符的结合律,由于++得优先级高于*(乘号),所以先计算a++。
而a++又是有“延迟”的,它在当前语句中不对a的值加1,而是当前语句执行完之后,a的值才加1. 所以如果a一开始为 0,那么a++的值还是零。
不过printf("%d",a++*2);执行完之后,a的值为1了。
页:
[1]