gpt4 book ai didi

c++ - 语法不明确

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:05:20 24 4
gpt4 key购买 nike

#include <iostream>
using namespace std;

typedef int MYINT;

int main()
{
int y = MYINT(); // As expected, y = 0; value initialization
cout << MYINT(); // Error
cout << sizeof(MYINT()); // Error
}

为什么主函数中右大括号前的最后两行出错?为什么表达式 MYINT() 在不同的上下文中有不同的处理方式?任何标准引用都会有所帮助。

最佳答案

MYINT() 可以根据上下文解释为类型 MYINT 的表达式,或者不带参数并返回 MYINT 的函数类型的说明符。在某些情况下,表达式或类型说明符有效,这会产生歧义;如果可能,可以通过将其解释为类型说明符来解决此问题(编辑:C++03 8.2/2,如果您需要标准引用)。

sizeof 可以采用表达式或带括号的类型说明符作为参数,从而产生歧义。所以这里 MYINT() 被解释为类型说明符;然后你会得到一个错误,因为 sizeof 不能应用于函数类型。

编辑:您可以通过删除括号来修复错误,以便将其解释为表达式 (sizeof MYINT()),添加额外的括号使其不是有效的类型说明符 (sizeof((MYINT()))),或者将其更改为正确的类型 (sizeof(MYINT))。

cout << MYINT() 是明确的,所以应该没有错误,事实上我的编译器上没有。错误是什么,你的编译器是什么?

关于c++ - 语法不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3635701/

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