将一个int数组(只有一个元素)分配给c中的一个整数
Assign an array of int (only one element) to an integer in c
我在网页上看到我们可以这样做:
int k = {5};
当我自己尝试时,我发现这在 C 编程中有效并且 k
的值是 5
。
- 问1:为什么我们可以把整型数组(即使只有一个元素)赋值给一个整型变量,难道不会出错吗?
- q2:这种赋值是用来做什么的? (在什么情况下以及为什么我们使用它或者我们可能不再使用它?)
没有数组,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 , 指定 opt initializer
int k = {5};
是一种完全合法的初始化标量的方法,尽管它并不能很好地表达您的 意图。因此,好的编译器可能会警告您。
但请注意,大括号初始化为零 {0}
是惯用的。 (尽管在 C++ 中,我更喜欢使用 {}
)。
我在网页上看到我们可以这样做:
int k = {5};
当我自己尝试时,我发现这在 C 编程中有效并且 k
的值是 5
。
- 问1:为什么我们可以把整型数组(即使只有一个元素)赋值给一个整型变量,难道不会出错吗?
- q2:这种赋值是用来做什么的? (在什么情况下以及为什么我们使用它或者我们可能不再使用它?)
没有数组,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 , 指定 opt initializer
int k = {5};
是一种完全合法的初始化标量的方法,尽管它并不能很好地表达您的 意图。因此,好的编译器可能会警告您。
但请注意,大括号初始化为零 {0}
是惯用的。 (尽管在 C++ 中,我更喜欢使用 {}
)。