Цитата(редактор @ Sep 6 2012, 09:44)

Насколько я помню DOS и BC3.1, для получения 32-битного указателя требовалось ключевое сово far (расширение компилятора а не стандарт).
Для модели памяти типа LAGE все указатели были типа far pointer (BC3.1),
Ну вот Вы сами себе и ответили.
Для моделей large и huge все указатели без дополнительного ключевого слова (near) не лезли в int.
А кусок исходника
Код
int *ptr;
int broken_ptr = (int)ptr;
сам по себе не знает, каким компилятором и с какой моделью памяти он будет компилироваться.
Собственно, уважительно относиться ко всему этому (сначала ещё к K&R1, потом к K&R2/ANSI) я и начал где-то в 88-91 годах при переходе с PDP-11 (ДВК) на x86 ("Невроз"), в процессе перетаскивания кое-чего из уже успевшего быть написанным :-)