我用 qt creator 创建了一个 qt 应用程序,代码是这样的,
#include "mainwindow.h"
#include <QDebug>
#include <QApplication>
#include <stdlib.h>
int main(int argc, char *argv[])
{
double before = atof("3.1");
double x;
sscanf("3.1", "%lf", &x);
QApplication a(argc, argv);
double after = atof("3.1");
double y;
sscanf("3.1", "%lf", &y);
MainWindow w;
w.show();
qDebug() << before;
qDebug() << after;
qDebug() << x;
qDebug() << y;
return a.exec();
}
输出是
3.1
3
3.1
3
这意味着 sscanf 和 atof 在“QApplication a(argc, argv);”之后截断小数部分。该问题仅出现在 Linux Mint 17 下的 Qt5.3 中。我在 windows 8 和 Mac OS 10.9 中测试了相同的程序,它们没有相同的问题。它是 Linux Qt5.3 中的错误还是与 linux c 库有关?
完整的代码可以在这里访问