gpt4 book ai didi

c++ - C++ 标准的哪一部分允许在括号中声明变量?

转载 作者:太空狗 更新时间:2023-10-29 23:11:56 24 4
gpt4 key购买 nike

考虑以下代码:

int main() {
int(s);
}

令我惊讶的是它创建了有效的变量 s。谁能解释这里发生了什么?

最佳答案

[dcl.meaning] 在标准中说:

In a declaration T D where D has the form ( D1 ) the type of the contained declarator-id is the same as that of the contained declarator-id in the declaration T D1.

Parentheses do not alter the type of the embedded declarator-id, but they can alter the binding of complex declarators.

更简单地说,您可以在 C++ 语法中被视为“声明符”的任何内容加上括号。 (笼统地说,声明符是声明的一部分,没有初始说明符和包含一个名称的类型。)

在您的示例中,标识符 s 是一个声明符,因此您可以在其两边加上括号并且其含义不会改变。

正如第二个引述的句子所暗示的那样,这样做的原因是,当事情变得更加复杂时,它可能是必要的。一个例子:

int * a [10];     // a is an array of ten pointers to int.
int ( * b ) [10]; // b is a pointer to an array of ten ints.

关于c++ - C++ 标准的哪一部分允许在括号中声明变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48972951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com