我很惊讶这段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-这种临时数组的应用是什么?