操作数的计算顺序

问题描述 投票:0回答:1

是什么在C以下程序的输出?我基本上困惑是否主()将调用T1()或T2()第一。

#include <stdio.h>

int a=40;
int t1()
{
    int a=20;
    return a;
}
int t2()
{
    int a=30;
    return a;
}
int main()
{
    int k=t1() + t2();
    printf("%d",k);
    return 0;
}
c operator-precedence order-of-execution
1个回答
4
投票

由于所有的函数返回局部变量的值,你的代码是相同的:

int a = 40;

int t1() { return 20; }
int t2() { return 30; }

int main() { printf("%d", t1() + t2()); }

或者,更简单:

int a = 40;
int main() { printf("%d", 20 + 30); }

或者更简单又:

int a = 40;
int main() { fputs("50", stdout); }

在第一个版本,它既是不确定的,并且其功能调用的子表达式先计算无关。

© www.soinside.com 2019 - 2024. All rights reserved.