gpt4 book ai didi

c++ - int的默认值是1吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:26:43 26 4
gpt4 key购买 nike

this question学习后在 C++ 中的 It is okay to put the name of the variable in parenthesis
我试过这个程序:

#include <iostream>
int main()
{
int (a)();
std::cout << "if this works then deafult value of int should be " << a << std::endl;
return 0;
}

并得到 'if this works then deafult value of int should be 1' 的输出
那么,这是真的吗?

编辑::
当我尝试为 a 赋值时阅读@james-mcnellis 的回答后,它给出了一个错误 assignment of function ‘int a()’ .

现在很明显,a 是函数而不是变量。

最佳答案

a不是 int : 它是一个没有参数并返回 int 的函数.因为是函数声明,a也不是局部变量,也没有“默认值”。

程序格式错误,因为您从未定义函数 a但是您试图使用它(通过在插入表达式中获取它的地址)。因此,它违反了一个定义规则。

如果定义 a在程序中,1将被打印,因为函数的地址 a将转换为 bool : operator<<具有 bool 的重载参数是函数指针参数类型的最佳匹配。

[注意:如果你定义a并用 Visual C++ 编译,它会打印函数的地址,而不是 1 .这是(我认为)因为 Visual C++ 允许将函数指针隐式转换为 void* ,然后是 operator<<具有 void const* 的重载参数是函数指针参数类型的最佳匹配。如果您在禁用语言扩展 ( /Za ) 的情况下进行编译,则带有 bool 的重载将按预期选择参数。]

关于c++ - int的默认值是1吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11751953/

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