Я чувствую себя действительно глупым, спрашивая это, потому что я знаю, как сделать это 101 путь, но не способ, которым это определяется в книге. (отметьте, я знаю C++),
До сих пор мы только пробежались через самые основы C++. Так в основном мы знаем переменные, присвоение и основной кастинг.
В книге я испытываю затруднения из-за этой части проблемы:
Таким образом, у меня есть тривиальный код:
double n;
cout<<"Number: ";
cin >> n;
cout <<endl<<static_cast<int>(n)<<endl;
Но я понял, что это не работает на меня. Это будет всегда усекать десятичное число так, чтобы 1.9-> 1, а не ожидаемые 1.9-> 2
Как я фиксирую это использование только, что я "знаю"? (как в, без раунда () или если операторы и такой)
Действительно ли это - проблема соответствия стандартов? В школе я думал, что у меня было что-то подобная работа с Visual C++ 2005 на Windows XP 32 бита, но теперь я при своей домашней попытке сделать то же самое, и это не работает. Мой домашний компилятор является gcc 3.3.5 на OpenBSD 64 бита. Или это могло быть опечаткой в книге?
static_cast
Или static_cast
для более правильного поведения при отрицательном n
.
Просто, чтобы вы знали, это не проблема с вашим компилятором. В Си++, когда вы приводите плавающий диск к интегральному типу, значение всегда усекается.