我不明白为什么我会得到这样的输出:理解数组

问题描述 投票:0回答:1

当我在 C 编程语言中声明一些多个随机 int 变量时。

案例 1:使用

int b=(20,30,400);
当我运行指定圆括号的代码而不正确声明数组时,我得到的输出为
400
。这是其中的最后一个值。

#include <stdio.h>

int main() {
   
    int b=(20,30,400);

    printf("%d",b);

    return 0;
}

案例 2:使用

int b={20,30,400};
当我运行指定花括号的代码而没有正确声明数组时,我得到的输出为
20
。这是其中的第一个值。

#include <stdio.h>

int main() {
   
    int b={20,30,400};

    printf("%d",b);

    return 0;
}

我想知道数组中大括号的确切工作方式,为什么它改变它的输出值。

arrays c windows curly-braces braces
1个回答
0
投票

在你的第一个例子中,你有这个:

    int b=(20,30,400);

(20, 30, 40)
是使用逗号运算符(两次)的表达式。逗号运算符先计算左侧的表达式,然后计算右侧的表达式,并获得右侧表达式的值。因此,
(20,30,400)
“评估”
20
30
,然后是
400
,并且具有值
400
。这就是为什么第一个代码片段打印
400

您的第二个代码片段对我来说似乎不是有效的 C 代码。它在 gcc 中编译时带有警告,即使使用

-pedantic
,所以也许我遗漏了一些东西。我在 6.7.10.12 的当前C23 标准草案中能找到的最好内容是:

标量的初始值设定项应为单个表达式,可以选择用大括号括起来,或者应为空初始值设定项

所以我想说大括号是可以的,但是里面不能有更多的表达。

© www.soinside.com 2019 - 2024. All rights reserved.