鱼C论坛

 找回密码
 立即注册
查看: 2293|回复: 6

[已解决]while循环 结合 i++ 结合判断 语句的执行规则

[复制链接]
发表于 2022-10-15 16:04:21 | 显示全部楼层 |阅读模式
17鱼币
本帖最后由 jkLoliTA 于 2022-10-15 16:38 编辑
while(i++ != 0){
   //语句
}
想请教一下括号内语句的执行顺序
理论上运算符优先级 ++ > !=并且两者的结合性都为 ->左到右
为何运算结果却是先执行判断
(不好意思哈各位大佬,新人只有这么点鱼币,给不了更多了)

(题目原型是S1E22动动手第0题的while(*target++ != '\0')

我的问题是:
while(i++ != 0)
为什么先判断 i != 0 是否为真,
再i = i +1
最佳答案
2022-10-15 16:04:22
jkLoliTA 发表于 2022-10-15 16:37
嗯感谢,但我其实想请教一下这么执行的原因(即这句话的执行顺序为什么是这样的)


i++是要语句执行完之后才会自增
例如:
#include <stdio.h>

int main()
{
   int i=0;
   printf("%d",i++);
   
   return 0;
}

运行结果:
0

++i才会语句执行玩之前就完成自增
#include <stdio.h>

int main()
{
   int i=0;
   printf("%d",++i);
   
   return 0;
}

运行结果:
1


所以把代码改成++i就是你想要的结果啦
#include <stdio.h>

int main()
{
   int i=0;
   while(++i != 0){
   //语句
           printf("你好");
   }
   
   return 0;
}

最佳答案

查看完整内容

i++是要语句执行完之后才会自增 例如: 运行结果: ++i才会语句执行玩之前就完成自增 运行结果: 所以把代码改成++i就是你想要的结果啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-15 16:04:22 | 显示全部楼层    本楼为最佳答案   
jkLoliTA 发表于 2022-10-15 16:37
嗯感谢,但我其实想请教一下这么执行的原因(即这句话的执行顺序为什么是这样的)


i++是要语句执行完之后才会自增
例如:
#include <stdio.h>

int main()
{
   int i=0;
   printf("%d",i++);
   
   return 0;
}

运行结果:
0

++i才会语句执行玩之前就完成自增
#include <stdio.h>

int main()
{
   int i=0;
   printf("%d",++i);
   
   return 0;
}

运行结果:
1


所以把代码改成++i就是你想要的结果啦
#include <stdio.h>

int main()
{
   int i=0;
   while(++i != 0){
   //语句
           printf("你好");
   }
   
   return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-15 16:27:55 | 显示全部楼层
        先判断 i 是否不等于 0,同时,执行 i = i + 1,然后,才根据判断结果决定是否继续循环。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-10-15 16:37:35 | 显示全部楼层
jackz007 发表于 2022-10-15 16:27
先判断 i 是否不等于 0,同时,执行 i = i + 1,然后,才根据判断结果决定是否继续循环。

嗯感谢,但我其实想请教一下这么执行的原因(即这句话的执行顺序为什么是这样的)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-15 16:55:41 From FishC Mobile | 显示全部楼层
本帖最后由 jackz007 于 2022-10-15 16:57 编辑
jkLoliTA 发表于 2022-10-15 16:37
嗯感谢,但我其实想请教一下这么执行的原因(即这句话的执行顺序为什么是这样的)


     没有原因,C 语言设计者就是这样安排的,变量的自增自减本身就是这么设计和操作的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-15 17:00:18 | 显示全部楼层
++是自增运算符,但是++i和i++是不同的。
i++是先用再加,就是说程序先以i你来做运算,整个表达式运算完了,最后再进行i =i+1的操作;
++i是先加再用,也就是程序先运行i=i+1,之后再以新的i值进行运算。

++放在变量的左右效果是不同的,这是标准定义的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-10-15 17:20:08 | 显示全部楼层
fcage 发表于 2022-10-15 17:00
++是自增运算符,但是++i和i++是不同的。
i++是先用再加,就是说程序先以i你来做运算,整个表达式运算完了 ...

好的,感谢感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-27 12:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表