当我在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;
}
型
我想知道在数组中使用大括号的确切方法,为什么它会改变输出值。
1条答案
按热度按时间llmtgqce1#
在你的第一个例子中,你有这样的:
字符串
(20, 30, 40)
是一个使用逗号运算符(两次)的表达式。逗号运算符先计算左边的表达式,然后计算右边的表达式,并具有右边表达式的值。因此,(20,30,400)
“计算”20
和30
,然后400
,并且具有值400
。这就是为什么第一个代码片段打印400
。你的第二个代码片段对我来说似乎不是有效的C代码。它在gcc中编译时带有警告,即使是
-pedantic
,所以也许我错过了一些东西。我在6.7.10.12上找到的最好的draft C23 standard是这样的:标量的初始化器必须是一个表达式,可以用大括号括起来,也可以是空的初始化器
所以我认为大括号是可以的,但是里面不能有多个表达式。