首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果(a--)和(--a)输出不同

如果(a--)和(--a)输出不同
EN

Stack Overflow用户
提问于 2022-09-02 06:12:09
回答 2查看 60关注 0票数 0
代码语言:javascript
复制
#include <stdio.h>
int main(){
static int a = 9;
if (a--){
   printf("after decrement a =%d\n", a);
   main();
   }
  return 0;
}

输出:

代码语言:javascript
复制
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)

产出:

代码语言:javascript
复制
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开始。

EN

回答 2

Stack Overflow用户

发布于 2022-09-02 06:14:40

这是关于https://en.cppreference.com/w/cpp/language/operator_incdec中记录的后置和预入/减运算符的问题。

使用--a,在将对变量的引用返回到计算之前执行--,这意味着它基本上将开始递减。

另一方面,对于a--,程序缓存a的前一个值,递减它,然后返回缓存的值。

所以:

代码语言:javascript
复制
int a = 5;
printf("%d\n", --a); //Prints 4
printf("%d\n", a--); //Prints 4
printf("%d\n", a); //Prints 3
票数 1
EN

Stack Overflow用户

发布于 2022-09-02 06:24:05

OP:“当使用预减量时,输出从8开始,而从9开始。”

在这两种情况下,在变量的值在if( )中打印之前,变量在printf( )条件中被递减。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73578444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档