代码之家  ›  专栏  ›  技术社区  ›  ar2015

已分配临时数组,但未分配临时主值

  •  1
  • ar2015  · 技术社区  · 6 年前

    我很惊讶 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)是临时数组,而不是第二个(对于基本的基本类型)?为什么语言是这样设计的?

    0 回复  |  直到 6 年前
    推荐文章