我很惊讶这个C++
代码被编译了:
int main()
{
(int[10]){}[0]=15;
return 0;
}
等效程序集是
main:
push rbp
mov rbp, rsp
mov QWORD PTR [rbp-48], 0
mov QWORD PTR [rbp-40], 0
mov QWORD PTR [rbp-32], 0
mov QWORD PTR [rbp-24], 0
mov QWORD PTR [rbp-16], 0
mov DWORD PTR [rbp-48], 15
mov eax, 0
pop rbp
ret
根据此代码,定义一个没有任何名称的数组,然后进行分配。
有趣的是,当没有数组时,代码不会编译:
int main()
{
(int){}=15; /* <Compilation failed> */
return 0;
}
1-为什么在C ++中,对于临时数组,第一个表达式(也许您称其为xvalue赋值)合法,而对于基本主类型,为什么第二个表达式不合法?为什么用这种方式设计语言?
2-这样的临时数组有什么用途?