【问题标题】:Precedence order for a complex expression [duplicate]复杂表达式的优先顺序[重复]
【发布时间】:2021-02-28 18:47:36
【问题描述】:
#include<stdio.h>
void main()
{
    int num, var;
    num = (var=15, var+=35);
    printf("%d",num);
}

这里 num 计算为 50。
我想验证 我的推理:- 在 (..) 内部,
我们首先从左到右阅读以查看所有可用的操作数,
按优先顺序,
然后评估 += = ,(按顺序)。 最后我们有 var=50,它被分配给 num。我说的对吗?

【问题讨论】:

  • 您唯一的问题是关于(...) 内容的执行顺序吗?
  • @ryyker ....是的

标签: c operators


【解决方案1】:

表达式

(var=15, var+=35)

使用 逗号运算符,它从左到右计算每个子表达式。逗号引入了一个序列点,因此在计算下一个子表达式之前应用每个子表达式的副作用。表达式的类型和结果是最右边子表达式的类型和结果。相当于写:

var = 15;
var += 35;
num = var;

请注意,上面使用的逗号运算符与函数调用中分隔参数的逗号相同 - 函数参数保证从左侧计算向右,并且只保证在调用函数之前应用副作用,而不是在计算每个参数之后。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 2012-11-18
    • 1970-01-01
    • 2015-02-13
    • 2012-12-23
    • 2020-10-17
    相关资源
    最近更新 更多