将int数组(只有一个元素)分配给c中的整数

时间:2016-08-26 08:28:10

标签: c syntax variable-assignment

我在网页上看到我们可以这样做:

int k = {5};

当我自己尝试时,我发现这适用于C编程,k的值为5

  • q1:为什么我们可以为整数类型的变量赋一个整数数组(即使只有一个元素),是否有一些错误?
  • q2:这种类型的作业用于什么? (在哪种情况下,为什么我们使用它或者我们不再使用它?)

2 个答案:

答案 0 :(得分:4)

没有数组,C语法只允许这个。这两者都是等价的:

int k = 5;
int k = {5};

如初始化 1 的语法规则所示,
initializer可以是赋值表达式,对应于:

int k = 5;

初始值设定项也可以是{initializer-list},它可以是初始化程序,可以是赋值表达式:

int k = {5};

1 (引自ISO / IEC 9899:201x 6.7.9初始化语法1.)
初始化:
赋值表达式
{initializer-list}
{initializer-list,}

初​​始化列表:
指定opt初始化器
initializer-list,指定opt初始化程序

答案 1 :(得分:3)

int k = {5};是初始化标量的完全合法的方法,尽管它并没有真正表达你的意图。因此,一个好的编译器可能会警告你。

但请注意,括号初始化为零{0}是惯用的。 (虽然在C ++中,我更喜欢使用{})。