为啥这个程序的输出是 4? [复制]

Posted

技术标签:

【中文标题】为啥这个程序的输出是 4? [复制]【英文标题】:Why output of this program is 4? [duplicate]为什么这个程序的输出是 4? [复制] 【发布时间】:2017-10-13 17:01:34 【问题描述】:
#include<stdio.h>

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

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

【问题讨论】:

【参考方案1】:

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

C11 §6.5.17 逗号运算符:

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

【讨论】:

【参考方案2】:

() 的优先级高于 = 并且 () 的结果是最后一个元素,在您的示例中为 4。比=操作会做

【讨论】:

解释清楚。无论如何,GCC 会给你一个警告left-hand operand of comma expression has no effect

以上是关于为啥这个程序的输出是 4? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥是输出 (Nan,Nan)? [复制]

为啥事件处理程序会同时输出其所有操作? [复制]

为啥 logcat 显示这个? [复制]

为啥我在这个程序上听到哔哔声? [复制]

为啥这个数字会增加一? [复制]

为啥这个程序不允许我在需要时输入信息? [复制]