OberonCore
https://forum.oberoncore.ru/

ОТГОЛОСКИСИ :(
https://forum.oberoncore.ru/viewtopic.php?f=27&t=1955
Страница 1 из 1

Автор:  ilovb [ Среда, 14 Октябрь, 2009 19:23 ]
Заголовок сообщения:  ОТГОЛОСКИСИ :(

Недавно ковырял PowerBasic 9.0

пишу:
...
dim i as integer
for i=1 to 1000000000000
next i
...

компилит без проблем... :) и работает.... правда i вроде как инкрементится по кругу

Автор:  Александр Ильин [ Среда, 14 Октябрь, 2009 20:16 ]
Заголовок сообщения:  Re: ОТГОЛОСКИСИ :(

ОТГОЛОСКИСИ чего?
ilovb писал(а):
работает.... правда i вроде как инкрементится по кругу
Вы подождите подольше: число-то ведь не маленькое ; )

Автор:  ilovb [ Среда, 14 Октябрь, 2009 20:51 ]
Заголовок сообщения:  Re: ОТГОЛОСКИСИ :(

Александр Ильин писал(а):
ОТГОЛОСКИСИ чего?...

Автор:  Александр Ильин [ Среда, 14 Октябрь, 2009 20:55 ]
Заголовок сообщения:  Re: ОТГОЛОСКИСИ :(

ilovb писал(а):
Александр Ильин писал(а):
ОТГОЛОСКИСИ чего?...
А, теперь понятно. У меня просто большие буквы в названии темы не отображаются.

Автор:  Geniepro [ Четверг, 15 Октябрь, 2009 07:42 ]
Заголовок сообщения:  Re: ОТГОЛОСКИСИ :(

ilovb писал(а):
dim i as integer
for i=1 to 1000000000000
next i

Из документации следует, что если переменная объявлена так:
DIM I AS INTEGER
то она имеет тип 16-битное целое число (with a range of -32,768 to +32,767 ( -2^15 to 2^15 - 1))
Сделайте простенькую проверку в теле цикла, что-нить вроде
if i >= 50000 then print i
На это много времени уйти не может, компилятор же всё-таки...

Автор:  ilovb [ Пятница, 16 Октябрь, 2009 17:44 ]
Заголовок сообщения:  Re: ОТГОЛОСКИСИ :(

Я выяснил причину :)

Ничего там по кругу не инкрементится. Просто компилятор игнорирует старшие байты. По типу индексной переменной берет байты а остальные просто отбрасывает. Результат в итоге неоднозначный...
Оказывается что можно даже так писать:
dim a(5) as string
a(10)="abracadabra"
В этом случае все отработает тоже без ошибок. Но a(10) будет содержать ноль. Правда иногда, если обратиться опять же к левому индексу, элемент (несуществующий) массива может содержать какое нибудь значение.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/