Печать double в std :: cout приводит к ошибке сегментации (C ++) - PullRequest
0 голосов
/ 13 февраля 2019

Я новичок в 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, и теперь он работает нормально.Спасибо всем за помощь!

1 Ответ

0 голосов
/ 13 февраля 2019

Как отмечали многие, это обычно должно работать.Проблема была с моей установкой: у меня была старая версия gcc где-то в моей переменной PATH (версия 4.1).Перемещение пути более новой версии к началу PATH решает проблему.Спасибо всем за помощь.

Чтобы проверить, что с вами происходит, вы можете сделать следующее: выполнить g++ --version в каталоге вашего проекта.Сравните это с выводом g++.exe --version, когда вы находитесь в каталоге, где установлен gcc (для меня это было C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...