Я новичок в 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 и MinGW (x86_64-8.1.0-posix-seh-rt_v6-rev0
).VS Code использует следующие файлы для компиляции / отладки:
И здесь вы можете увидеть полный вывод, если это поможет.
Любая идея, что я делаюздесь не так?Спасибо.
РЕДАКТИРОВАТЬ:
При компиляции вручную с использованием g++ -g .\src\HelloWorld.cpp -std=c++11 -o HelloWorld.exe
(или просто g++ .\src\HelloWorld.cpp -o HelloWorld.exe
) и запуске этого с консоли, происходит то же самое (без вывода).
Я установил MinGW с здесь , используя следующие настройки:
- Версия:
8.1.0
- Архитектура:
x86_64
- Темы:
posix
- Исключение:
seh
- Редакция сборки:
0
РЕДАКТИРОВАТЬ 2:
Нашел проблему.В моем PATH скрывалась старая версия gcc (может быть, из Visual Studio или MSSQL Server?).Я просто переместил текущий gcc в верхнюю часть PATH, и теперь он работает нормально.Спасибо всем за помощь!