C中的奇怪多变量赋值语句

mac*_*roo 2 c graphics variable-assignment

我以为我理解C语言中的赋值操作,但我正在尝试学习一些图形编程,并且我遇到了这个初始化语句让我感到困惑:

/* request auto detection */
int gdriver = DETECT, gmode, errorcode
Run Code Online (Sandbox Code Playgroud)

我使用元素编译了一个小的工作程序,结果似乎是赋值和声明的组合.RHS上的第一个变量分配给LHS变量,其余变量被声明(但未初始化)为LHS变量的类型......

#include <stdio.h>

int main(){

    int a = 0;  // Comment out this line and things break
    int d = a, b, c;

    printf("%d %d %d %d", a, b, c, d);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么你会使用这样的一行似乎一起执行两个不相关的行为?

Gre*_*ill 8

声明

int d = a, b, c;
Run Code Online (Sandbox Code Playgroud)

在功能上是相同的

int d = a;
int b;
int c;
Run Code Online (Sandbox Code Playgroud)

变量d初始化为值a,b并且c都是未初始化的.