【发布时间】:2023-03-17 14:09:01
【问题描述】:
#include<stdio.h>
void main()
{
int i=10;
printf("%d %d %d\n",a,--a,++a); // output 10 10 10
}
这段代码如何给出相同的输出? 这些递增和递减运算符的优先级是什么?
【问题讨论】:
#include<stdio.h>
void main()
{
int i=10;
printf("%d %d %d\n",a,--a,++a); // output 10 10 10
}
这段代码如何给出相同的输出? 这些递增和递减运算符的优先级是什么?
【问题讨论】:
C 像许多语言一样使用 Eager evalution (https://en.wikipedia.org/wiki/Eager_evaluation)
这意味着printf 的参数在调用printf 函数之前被评估。
对于编译器,您的代码如下所示
#include<stdio.h>
void main()
{
int a=10;
a;
--a;
++a;
printf("%d %d %d\n",a,a,a); // output 10 10 10
}
【讨论】:
它为您提供相同的输出,因为 - - a 打印 a 的原始值,然后它变成 9(或 11 与 ++a)
【讨论】: