while(index++<5)括号里的执行顺序的问题

#include <stdio.h>
int main (void)
{
    int index=3;
    //index++;
    //printf("%d",index);
    while(index++<5)
        printf("Have a fair day or better.\n");
    return 0;
}

在这段程序执行的时候输出两个
Have a fair day or better.
Have a fair day or better.
在我的想法中因为++的优先级大于<号,所以 while(index++<5)这句话先执行index++再执行<5,按照我这种想法那输出只有一句Have a fair day or better.
所以向大家请教while(index++<5)括号里的执行顺序的问题

阅读 4.3k
3 个回答
int index = 3;

while(index++ < 5);  //index++这个运算符表示的意思是整个表达式执行完毕,才加1

index = 3 index++ < 5 第一次 index = 3 index < 5 执行完毕之后 index = 4
index = 4 index++ < 5 第二次 index = 4 index < 5 执行完毕之后 index = 5

最后说明一下,++i 与 i++的区别就是 ++i表示整个表达式计算之前就加1,i++则是相反。可以这样记住,++i就是先加后用,i++就是先用后加。

你自己也说了:

++的优先级大于<号

所以代码等价于:

while ((index++) < 5)

然后你再思考一下。

请查阅++ii++的区别。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进