当我在 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;
}
我想知道数组中大括号的确切工作方式,为什么它改变它的输出值。
在你的第一个例子中,你有这个:
int b=(20,30,400);
(20, 30, 40)
是使用逗号运算符(两次)的表达式。逗号运算符先计算左侧的表达式,然后计算右侧的表达式,并获得右侧表达式的值。因此,(20,30,400)
“评估”20
和30
,然后是400
,并且具有值400
。这就是为什么第一个代码片段打印 400
。
您的第二个代码片段对我来说似乎不是有效的 C 代码。它在 gcc 中编译时带有警告,即使使用
-pedantic
,所以也许我遗漏了一些东西。我在 6.7.10.12 的当前C23 标准草案中能找到的最好内容是:
标量的初始值设定项应为单个表达式,可以选择用大括号括起来,或者应为空初始值设定项
所以我想说大括号是可以的,但是里面不能有更多的表达。