2017-01-20 18 views
1

Я просто пытаюсь напечатать номер с помощью qDebug следующим образом:QDebug печатает неправильный номер

qDebug() << QString::number(03001); 

Но результат:

"1537" 

Если я пытаюсь напечатать без первого нуля :

qDebug() << QString::number(3001); 

результат правильно:

"3001" 

Почему это происходит?

Я использую Qt 5.3.

+6

Поскольку ведущий ноль указывает восьмеричное число - см. [Ссылка на целочисленные литералы] (http://en.cppreference.com/w/cpp/language/integer_literal) для получения дополнительной информации – UnholySheep

ответ

5

Ведущий ноль сделает число, которое будет интерпретироваться как octal literal.

восьмеричное-литерал цифра ноль (0), а затем ноль или более восьмеричных цифр (0, 1, 2, 3, 4, 5, 6, 7)

Так что это не любым способом, связанным с qDebug, но с тем, как C++ интерпретирует integer constants.