У меня есть некоторый код, считывающий данные из текстового файла и преобразующий их в float.На моих новых Raspberry PI (3B + и Zero), на которых запущен raspbian 10 Buster, я получаю странное поведение с clang ++ (v 7.0.1).Код
#include <iostream>
#include <string>
using std::cout;
using std::endl;
int main(void){
std::string str="3.14";
float fl = std::stof(str);
cout << fl << endl;
cout << fl << endl;
cout << fl << endl;
return 0;
}
, скомпилированный с clang++ -std=c++11
, приводит к следующему выводу:
$ a.out
3.14
3.68935e+19
0
Есть ли фундаментальная ошибка в моем коде или это проблема?с clang?
Проблема возникает только на моих новых PI, и только с использованием clang ++ (не с g ++).Когда я изменяю «float» на double (и «stof» на «stod»), то поведение такое, как и ожидалось (выводит три раза «3.13»)
Обновление 18. Июль 2019 Похоже,быть решена обновлением clang