c语言 while (a-- > 0) 执行顺序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 while (a-- > 0) 执行顺序相关的知识,希望对你有一定的参考价值。

大致是int a;
问 while (a-- > 0)中执行先后,先判断再自减,还是先自减再判断,如果是先判断再自减,若表达式为假,a是否会再次自减?
如a=10,循环体执行完毕后,a为几?

参考技术A 表达式a--的值为a,之后为a-1;
先判断再自减
循环完之后为-1
--a的值为a-1追问

那若表达式为假,循环体不执行,a是否会再次自减?他等同于while(a>o)a--;吗?

追答

不相同,这个只要运算过那个式子,a--,之后就是会是a=a-1;

追问

那a最后是-1喽?不管语法的话,就是while(a>0;a--)么?也就是无论判断真假,a--都执行?

追答

while(a>o)a--;
当a=0时就会跳出,a=0;
while (a-- > 0)
当a=0时也会跳出,a=-1;

本回答被提问者采纳
参考技术B 先--再判断,但判断的时候用的是--前的值,就是就是判断为假,也做一次减法运算,因为--优先级高于<号追问

他等同于while(--a>0)吗?

追答

。。。你去了解下++a与a++的区别就知道了

追问

恩 懂了。。

c语言无限循环while和for(;;)的区别

参考文章:关于 while(1)和for(;;)效率问题的一点想法

在执行效率上可能并没太大区别,功能上也差不多。。。

例如:for(;;)

#pragma warning(disable : 4996)
#include <stdio.h>

int main() 
	int a = 0;
	for (;;) 
		if (a == 2) 
			a++; continue;
		
		if (a == 4) break;
		printf("这是啥?%d\\n", a++);
	
	return 0;

VS上运行结果:

这是啥?0
这是啥?1
这是啥?3

F:\\Arnold_Test\\20211223_jsonTest\\jsonTest\\Debug\\jsonTest.exe (进程 32952)已退出,代码为 0。
按任意键关闭此窗口. . .

以上是关于c语言 while (a-- > 0) 执行顺序的主要内容,如果未能解决你的问题,请参考以下文章

c语言请问while循环为啥执行不了?

C语言基础题目,求助!

c语言编程 while(num!=0) 啥意思

跪求C语言大神解决这些C语言选择题

在C语言中,设已定义k为int整型变量,则有下面while循环执行( )次。 k=10; while(k=0) k=k-1;求过程!

C++中do while()的用法