为什么这个程序的输出是4?

时间:2017-10-13 17:01:34

标签: c comma

#include<stdio.h>

int main(void) {
    int i=(1,2,3,4);
    printf("%d",i);
    return 0;
}

当我接受在线技术模拟测试时,我就提出了这个问题。首先我认为行int i=(1,2,3,4);中存在编译错误,但我错了。我不知道为什么这个问题的输出是4

2 个答案:

答案 0 :(得分:2)

这里,(1,2,3,4);是一系列表达式,由commas分隔,计算结果为最后一个表达式。

C11§6.5.17逗号运算符:

  

逗号运算符的左操作数被评估为void   表达;它的评估与之间存在一个序列点   正确的操作数。然后评估右操作数;结果   有它的类型和价值。

答案 1 :(得分:1)

()的优先级高于=,而()的结果是示例中最后一个为4的元素。比=操作将完成