我很惊讶
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++中,第一个表达式(也许你称之为赋值为xValm)是临时数组,而不是第二个(对于基本的基本类型)?为什么语言是这样设计的?