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

pod7payv  于 6个月前  发布在  Windows
关注(0)|答案(1)|浏览(55)

当我在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;
}


我想知道在数组中使用大括号的确切方法,为什么它会改变输出值。

llmtgqce

llmtgqce1#

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

int b=(20,30,400);

字符串
(20, 30, 40)是一个使用逗号运算符(两次)的表达式。逗号运算符先计算左边的表达式,然后计算右边的表达式,并具有右边表达式的值。因此,(20,30,400)“计算”2030,然后400,并且具有值400。这就是为什么第一个代码片段打印400
你的第二个代码片段对我来说似乎不是有效的C代码。它在gcc中编译时带有警告,即使是-pedantic,所以也许我错过了一些东西。我在6.7.10.12上找到的最好的draft C23 standard是这样的:
标量的初始化器必须是一个表达式,可以用大括号括起来,也可以是空的初始化器
所以我认为大括号是可以的,但是里面不能有多个表达式。

相关问题