我是C ++的新手,想打印一个双精度值。并不是我实际上需要打印该值,我只是想知道这里出了什么问题。
这是我的代码(HelloWorld.cpp
):
#include <iostream>
int main() {
double i = 5.5;
std::cout << i << std::endl;
return 0;
}
使用附加的调试器执行此操作会导致以下错误:
Thread 1 hit Breakpoint 1, main () at src/HelloWorld.cpp:4
4 double i = 5.5;
Thread 1 received signal SIGSEGV, Segmentation fault.
0x00000000929ba260 in ?? ()
当我在其中放置一个断点时,创建和分配变量没有问题。仅当程序应该打印该值时才会发生该错误。在没有调试器的情况下执行exe根本没有输出。当我用double
或long double
替换float
时,也会发生同样的情况。打印其他任何东西都可以正常工作(字符串,char
,int
,short
等)。
我正在使用Visual Studio Code和MinGW(x86_64-8.1.0-posix-seh-rt_v6-rev0
)。 VS Code使用以下文件进行编译/调试:
如果有帮助,here可以看到完整的输出。
任何想法我在这里做错了吗?谢谢。
编辑:
当使用g++ -g .\src\HelloWorld.cpp -std=c++11 -o HelloWorld.exe
(或仅g++ .\src\HelloWorld.cpp -o HelloWorld.exe
)进行手动编译并从控制台运行该代码时,会发生同样的情况(无输出)。
我使用以下设置从here安装了MinGW:
8.1.0
x86_64
posix
seh
0
编辑2:
发现了问题。我的PATH中潜伏着一个旧版本的gcc(也许来自Visual Studio或MSSQL Server?)。我只是将当前gcc移到PATH的顶部,现在一切正常。谢谢大家的帮助!
答案 0 :(得分:0)
正如许多人指出的那样,这通常应该起作用。问题出在我的设置上:我的PATH变量(版本4.1)中某个地方存在旧版本的gcc。将较新版本的路径移动到PATH的开头即可解决此问题。谢谢大家的帮助。
要检查天气,您也可以执行以下操作:在项目目录中执行g++ --version
。在安装gcc的目录(对我来说,这是g++.exe --version
)中,将此与C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin
的输出进行比较。
答案 1 :(得分:-1)
似乎您在Visual Studio中有一些配置问题。尽管在gcc中完全可以,但是要在gcc中进行编译,请执行以下操作:
g++ ["path-to-your-file"]file.cpp -o executable_file