【问题标题】:C++ output shown without returning the values [duplicate]显示 C++ 输出而不返回值 [重复]
【发布时间】:2020-06-13 04:17:15
【问题描述】:

使用的编译器-:代码块

没有返回“c”,变量“d”如何获得它的值?

#include<iostream>
using namespace std;

int add(int x,int y) {
    int c;
    c=x+y;
}

int main() {
    int a,b;
    cin>>a>>b;
    int d=add(a,b);
    cout<<d;
}

【问题讨论】:

  • 不从应该返回值的函数返回值是未定义的行为。没有什么可以从未定义的行为中推断出来——任何事情都可能发生。
  • 还是不明白。
  • @Noobcoder 未定义的行为意味着任何事情都可能发生。不知道怎么说更简单。
  • 旁注:Code::Blocks 是一个IDE,通常位于 g++ 编译器之上。
  • Please see this。输出怎么了?明白了吗?赋值,没有输出。更改编译器设置,可能会输出其他内容。同样,这一切都是因为您的程序选择调用未定义的行为。

标签: c++ function parameterized


【解决方案1】:

写下这段代码:

#include<iostream>
using namespace std;

int add(int x,int y)
{
    return x+y;//CHANGE THIS
}

int main()
{
     int a,b;
    cin>>a>>b;
    int d=add(a,b);
    cout<<d;
}

【讨论】:

  • 我知道这会起作用,但我的主要查询是为什么它返回一个值而我没有返回任何东西。因为我正在向我的朋友展示如何在不同的情况下使用 return 以及如果我不返回方式会发生什么。但它显示了上面在 cmets 中提到的未定义行为
【解决方案2】:

不能在 Visual C++ 中编译,但在使用 onlinedgb 时确实会给出结果。

JaMiT 上面的评论链接到带有解释的正确答案。

【讨论】:

    猜你喜欢
    • 2016-02-24
    • 1970-01-01
    • 2018-06-25
    • 2022-08-19
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    相关资源
    最近更新 更多