[讨论] while循环判断条件

楼主: look1214 (Swatch)   2019-11-30 14:39:40
int score[10];
int i = 0, sum = 0, num;
printf("请输入成绩(要结束请输入0):\n");
do
{
printf("请输入成绩:");
scanf("%d", &score[i]);
} while (score[i++] > 0);
请问while (score[i++]) > 0);
这句的意思是
1. 先用score[i]判断是否大于0,i再+1
还是
2. 直接用score[i++]判断是否大于0
第一次看到do-while的i++放在判断式而且还再阵列里面
请求开示
作者: ko27tye (好滋好滋)   2019-11-30 15:03:00
请搜寻post-increment operator 另外这种写法还蛮常见的先+1 但返回的是旧值 不在你列的两个选项之中
作者: a58524andy (a58524andy)   2019-11-30 17:55:00
你再看一次i++跟++i差在哪好了懂了之后可以参考置底13诫之8
作者: aa0917954358 (Doem)   2019-11-30 21:24:00
楼上是对的! 会先做i+1但是返回的是i旧值的copy假设是i’好了 再用score[i’] > 0判断
作者: LPH66 (-6.2598534e+18f)   2019-12-01 00:40:00
对, 在一些语意上后置是复制一个旧值回来
作者: b0920075 (Void)   2019-12-01 13:25:00
语法糖,看asm就知道到底在干吗
作者: onegoman (SKY)   2019-12-03 12:10:00
先完成while判断叙述后,再i=i+1可以再do{} while(); 之后写一行printf i的值就了解了。更正:‘在’ do....您这个跟我正在看的书的内容一样 呵我的解释不一定对,还请各位前辈指教 谢谢

Links booklink

Contact Us: admin [ a t ] ucptt.com