gpt4 book ai didi

c++ - 有关C++中函数的默认返回类型的查询

转载 作者:行者123 更新时间:2023-12-01 14:36:37 26 4
gpt4 key购买 nike

一本书说:

If return type is not mentioned, it defaults to int.


为了检查这一点,我编写了以下代码。
#include <iostream>

print() {
return 3.3;
}

int main(void) {
double d = print();
std::cout << d;

return 0;
}
不出所料,我得到了输出 3。这里没有问题。
我尝试了以下代码,这引起了一些困惑:
#include <iostream>

print() {
char x = 97;
std::cout << x;

return x;
}

int main(void) {
char c = print();
std::cout << c;

return 0;
}
我在这里期望出现错误,但是我得到的输出为 aa

我在这里有两个疑问:
  • 如果print函数的返回类型默认为int,并且在我返回字符变量时,为什么没有收到任何编译错误?
  • print()到底返回了什么?由于没有错误,显然print()返回了97。但是x正在存储a。那么97是如何返回的?
  • 最佳答案

    [In Visual Studio C++ since VS2005]
    您必须指定返回类型,否则您将得到一个编译错误“错误C4430:缺少类型说明符-假定为int。注意:C++不支持default-int” ...其他系统仅生成警告。
    但是,您故意忽略了第一个问题。所以让我们假设print()无论如何都会返回int ...

    1. If the return type of print function is defaults to int, and as I amreturning character variable, why I didn't receive any compilationerror?

  • 您可以简单地通过分配给'int'
  • 来转换'char'类型

    1. What exactly got returned by print()? As there is no error, clearlyprint() has returned 97. But x was storing a. Then how 97 gotreturned?

  • print()返回一个integer,它是一组零和一:十进制表示为97,ASCII表示为'a'。任何变量都只是一组零和一,可以用不同的格式表示:十进制,十六进制,ASCII字符等。

  • -
    如果要查看9797,则必须编写:
    #include <iostream>

    int print() // 1st issue: Add a return-type
    {
    char x = 97; // The ASCII code of 'a' character
    std::cout << static_cast<int>(x); // 2nd issue: Cast to int, or it will print 'a'

    return x; // You can convert a 'char' type simply by assigning to an 'int'
    }

    int main()
    {
    char c = static_cast<char>(print());
    std::cout << static_cast<int>(c); // Same 2nd issue
    }
    “C++编译器将 charsigned charunsigned char类型的变量视为具有不同类型。默认情况下,除非使用/ J编译选项,否则将 char类型的变量提升为 int就像默认为 signed char类型。在这种情况下,它们被视为 unsigned char类型,并提升为 int,不带符号扩展名。” Microsoft Documentation

    关于c++ - 有关C++中函数的默认返回类型的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63090184/

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