【问题标题】:how this printf() function output these values? [duplicate]这个 printf() 函数如何输出这些值? [复制]
【发布时间】: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

}

这段代码如何给出相同的输出? 这些递增和递减运算符的优先级是什么?

【问题讨论】:

    标签: c operators


    【解决方案1】:

    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
    }
    

    【讨论】:

    • 不正确。评估顺序未指定,程序具有未定义的行为。它不等同于任何东西。
    【解决方案2】:

    它为您提供相同的输出,因为 - - a 打印 a 的原始值,然后它变成 9(或 11 与 ++a)

    【讨论】:

    • a++和++a有什么区别?
    • 你能解释一下吗?
    • @VladimirTsykunov ++a 将增加 a 的值,然后返回增加的值。 a++ 将增加 a 的值,但它返回原始值。
    • 不,行为未定义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 2021-01-28
    • 2016-01-25
    相关资源
    最近更新 更多