#include <stdio.h>
int main(){
static int a = 9;
if (a--){
printf("after decrement a =%d\n", a);
main();
}
return 0;
}输出:
after decrement a =8
after decrement a =7
after decrement a =6
after decrement a =5
after decrement a =4
after decrement a =3
after decrement a =2
after decrement a =1
after decrement a =0这里打印到a=0
使用if(--a)时
产出:
after decrement a =8
after decrement a =7
after decrement a =6
after decrement a =5
after decrement a =4
after decrement a =3
after decrement a =2
after decrement a =1这里打印到a=1
因此,问题是当使用if(a--)打印到0,使用if(--a)打印到1时,当使用预减量时,输出如何从8开始,而不是从9开始。
发布于 2022-09-02 06:14:40
这是关于https://en.cppreference.com/w/cpp/language/operator_incdec中记录的后置和预入/减运算符的问题。
使用--a,在将对变量的引用返回到计算之前执行--,这意味着它基本上将开始递减。
另一方面,对于a--,程序缓存a的前一个值,递减它,然后返回缓存的值。
所以:
int a = 5;
printf("%d\n", --a); //Prints 4
printf("%d\n", a--); //Prints 4
printf("%d\n", a); //Prints 3发布于 2022-09-02 06:24:05
OP:“当使用预减量时,输出从8开始,而从9开始。”
在这两种情况下,在变量的值在if( )中打印之前,变量在printf( )条件中被递减。
https://stackoverflow.com/questions/73578444
复制相似问题