while循环 结合 i++ 结合判断 语句的执行规则
本帖最后由 jkLoliTA 于 2022-10-15 16:38 编辑while(i++ != 0){
//语句
}
想请教一下括号内语句的执行顺序
理论上运算符优先级 ++ > !=并且两者的结合性都为 ->左到右
为何运算结果却是先执行判断
(不好意思哈各位大佬,新人只有这么点鱼币,给不了更多了)
{:10_266:}
(题目原型是S1E22动动手第0题的while(*target++ != '\0')
我的问题是:
while(i++ != 0)
为什么先判断 i != 0 是否为真,
再i = i +1 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就是你想要的结果啦{:9_227:}
#include <stdio.h>
int main()
{
int i=0;
while(++i != 0){
//语句
printf("你好");
}
return 0;
}
先判断 i 是否不等于 0,同时,执行 i = i + 1,然后,才根据判断结果决定是否继续循环。 jackz007 发表于 2022-10-15 16:27
先判断 i 是否不等于 0,同时,执行 i = i + 1,然后,才根据判断结果决定是否继续循环。
嗯感谢,但我其实想请教一下这么执行的原因(即这句话的执行顺序为什么是这样的) 本帖最后由 jackz007 于 2022-10-15 16:57 编辑
jkLoliTA 发表于 2022-10-15 16:37
嗯感谢,但我其实想请教一下这么执行的原因(即这句话的执行顺序为什么是这样的)
没有原因,C 语言设计者就是这样安排的,变量的自增自减本身就是这么设计和操作的。 ++是自增运算符,但是++i和i++是不同的。
i++是先用再加,就是说程序先以i你来做运算,整个表达式运算完了,最后再进行i =i+1的操作;
++i是先加再用,也就是程序先运行i=i+1,之后再以新的i值进行运算。
++放在变量的左右效果是不同的,这是标准定义的。 fcage 发表于 2022-10-15 17:00
++是自增运算符,但是++i和i++是不同的。
i++是先用再加,就是说程序先以i你来做运算,整个表达式运算完了 ...
好的,感谢感谢
页:
[1]