📜  逗号运算符问题

📅  最后修改于: 2021-05-25 21:35:34             🧑  作者: Mango

请考虑以下C程序。

// PROGRAM 1
#include
  
int main(void)
{
    int a = 1, 2, 3;
    printf("%d", a);
    return 0;
}

上面的程序编译失败,但是下面的程序编译正常并打印1。

// PROGRAM 2
#include
  
int main(void)
{
    int a;
    a = 1, 2, 3;
    printf("%d", a);
    return 0;
}

并且以下程序打印了3个,为什么?

// PROGRAM 3
#include
  
int main(void)
{
    int a;
    a = (1, 2, 3);
    printf("%d", a);
    return 0;
}

在C / C++程序中,在两个上下文中使用逗号:(1)分隔符(2)运算符。 (有关更多详细信息,请参见此内容)。

逗号作为程序1中的分隔符起作用,我们在此程序中遇到编译错误。

逗号在程序2中充当运算符。在运算符优先级表中,逗号运算符符的优先级最低。因此,赋值运算符的优先级高于逗号,并且表达式“ a = 1、2、3”等效于“(a = 1),2、3”。这就是为什么我们在第二个程序中将输出设为1的原因。

在程序3中,使用了方括号,因此首先执行了逗号运算符,并且输出为3(有关更多详细信息,请参见Wiki页面)。

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。