![]() |
1
19
这是C99标准第6.5.2.5节中定义的复合文字。 它不是C++语言的一部分,所以C++编译器不编译它并不奇怪。或Java或Ada编译器) 复合文字的值是由初始化的未命名对象的值
在类型周围放上括号,然后后跟一个初始值设定项列表-它不是强制转换,因为在C99语法中,一个空的初始值设定项列表没有任何意义;相反,它是应用于产生给定类型的对象的类型的后缀运算符。你不是在创造
至于为什么要使用它,我看不出有什么好的理由在你的单行中,尽管可能是a可以被重新分配指向其他数组,所以这是一个较短的方法来完成前两行:
|
![]() |
2
6
这是一个c99结构,叫做 复合文字 根据2005年5月委员会第6.5.2.5节草案:
|
![]() |
3
1
|
![]() |
4
0
(int[2])告诉编译器下面的表达式应该转换为int[2]。这是必需的,因为{0,2}可以转换为不同的类型,如long[2]。强制转换发生在编译时,而不是运行时。 整个表达式在内存中创建一个数组,并将a设置为指向该数组。 |
![]() |
5
-2
|
![]() |
MaPo · Linux,设置锁定ICMP_过滤器选项 7 月前 |
![]() |
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 7 月前 |
![]() |
Bobby · 复合字面值总是左值吗? 7 月前 |
![]() |
9-Pin · C: 嵌套结构的堆栈内存分配 7 月前 |