2014-01-15 6 views
0

Я довольно смущен насчет того, как функции s>d и d>s работают в Форте.Ошибки в преобразовании Gforth в парные

Из того, что я прочитал, набрав 16.0 поместит 160 0 в стеке (так как он занимает две ячейки) и d. покажет 160.

Теперь, если я вхожу 16 s>d Я ожидаю, что стек будет 160 0 и d. показать 160, как и в предыдущем примере. Однако стек равен 16 0, а d. - 16.

Я вхожу в парную дверь неправильно? ? Является ли s>d не так просто, как «преобразовать одноклеточный значение в двойное одноклеточного значение Есть ли причины для этого нерегулярности Любых подсказки были бы оценены

ответ

2

Gforth interpets все из них тех же самое:. 1.60, 16.0 и . 160., т.е. преобразуется в удвоенное число в то время как 16 s>d преобразует к двойному количеству

ANS Forth только предписывает, что при the text interpreter processes a number that is immediately followed by a decimal point and is not found as a definition name, the text interpreter shall convert it to a double-cell number. Но Gforth идет beoynd, что:. http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/Number-Conversion.html#Number-Conversion