代码块不正确的C++输出
我有以下代码:代码块不正确的C++输出
#include <iostream>
using namespace std;
Sum (int a, int b)
{
int x = a - b;
//cout << x << " \n";
return x;
}
int main()
{
int s1 = Sum(3, 6);
cout << s1;
return 0;
}
系统信息: 赢7 SP1 64位旗舰版/专业版或Windows 8.1 x64的 代码块16.01 MinGW的 调试器名和版本:GNU GDB (GDB)7.6.1 编译器:GNU GCC编译器
此代码编译没有问题,但这是问题,应该有错误。
1)功能总和,没有返回值,在http://cpp.sh/它不让我编译,因为这一点。
2)无论我是否写入“return x”,变量的s1值为-3。
它在某种程度上通过x
每次的价值,但如果我取消了cout
声明上面的“return x
”一切都开始工作了预期,什么是地狱:) - >s1
会有一个随机值时,没有return语句(因为它在用于函数调用之前未被初始化),而当return
在那里时是-3。
我已经在3*立的电脑上试过了,它们都表现出相同的行为。所以我不认为机器是问题。 我也试过使用不同的编译器,但我不知道我是否正确配置它们,并且它们没有调试器?我试过Borland C++ and Digital Mars。 Borland有一个新的版本10.1,而不是代码块支持的5.5,我不能让新的工作。 我甚至不知道这是编译器还是程序问题?
我想学习C++,这是非常烦人的。我们的老师在课堂上使用相同的软件,但是在Linux上,它完美地工作。
Off topic:有没有办法在这里插入带有行号的代码?首先在这里发布,所以我仍然是新的:)。
谢谢!
转至 “项目” - > “编译选项” - > “编译器设置” 选项卡 - > “编译器标志”
和禁用-fpermissive
-fpermissive降级了一些关于从不符合标准的代码诊断错误警告。因此,使用-fpermissive将允许编译一些不合格的代码。
或使用你的代码的顶部编译禁用它:
#pragma GCC diagnostic ignored "-fpermissive"
你也可以尝试在“编译器标志”标签
BTW添加标志“-pedantic”:
如果您尝试online:
#pragma GCC diagnostic error "-fpermissive"
using namespace std;
Sum (int a, int b)
{
int x = a - b;
//cout << x << " \n";
return x;
}
int main()
{
int s1 = Sum(3, 6);
cout << s1;
return 0;
}
你有完全相同的行为,你描述!
正如Rama说的,您可能已经在您的代码块中启用了-perfiveive。 转至“项目” - >“编译选项” - >“编译器设置”选项卡 - >“其他选项”并删除-fpermissive。
使用更严格的编译器选项。 – juanchopanza
您使用的是哪个版本的GCC?因为就像你说的那样,不应该用任何C++编译器的版本进行编译。 –
什么是问题?为什么不正确的代码行为不确定? – Fureeish