purebasic.info

PureBasic forum
Текущее время: Вт июн 19, 2018 9:54 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Сб сен 11, 2010 6:12 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6306
Благодарил (а): 19 раз.
Поблагодарили: 188 раз.
Пункты репутации: 48
haav писал(а):
возможно эта строчка высветит ошибку, ведь положено:
ab=a+b


Как это "положено"? Кем? Это обычная операция присваивания, которая означает, что левое будет равно правому. Соответственно какая то переменная а или b станет равна 300, а другая останется неизменной. По логике должна изменится переменная b, т.к. она стоит рядом со знаком равно, но не факт - ибо компилятор может переменные переставить.

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб сен 11, 2010 12:40 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт дек 17, 2009 4:49 pm
Сообщений: 1230
Откуда: г. Ангарск
Благодарил (а): 2 раз.
Поблагодарили: 15 раз.
Пункты репутации: 10
b=ab т.е b=300
потом a=a+b т.е. a=301

_________________
.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб сен 11, 2010 1:08 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11179
Благодарил (а): 4 раз.
Поблагодарили: 414 раз.
Компилятор "думает" по другому. :?

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб сен 11, 2010 7:51 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пт янв 08, 2010 9:41 am
Сообщений: 206
Откуда: Приднестровье, Бендеры
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
так, задам эти две задачки своей учительнице по алгебре, посмотрим что она скажет :)

_________________
Free Coders Community


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб сен 11, 2010 8:20 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6306
Благодарил (а): 19 раз.
Поблагодарили: 188 раз.
Пункты репутации: 48
_iNi_ писал(а):
так, задам эти две задачки своей учительнице по алгебре, посмотрим что она скажет :)

Алгебра и машинная логика - это две большие разницы!

По существу вопроса, мне кажется, логично предположить что операция присвоения работает в этом случае правильно. Т.е. в независимости от кол-ва слагаемых слева, значение присваивается первому( компилятор просто только одного и ожидает по логике), а остальные слагаемые не изменяются. К стати, объединить эти две суммируемые переменные в одну при помощи скобок не получиться - компилятор выдаст ошибку.

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: загадка для вундеркиндов
СообщениеДобавлено: Вт дек 16, 2014 11:46 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11179
Благодарил (а): 4 раз.
Поблагодарили: 414 раз.
Не запуская код скажите что получится.
Код:
1
2
3
x=-2147483648
y=x/-1
Debug y


_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: загадка для вундеркиндов
СообщениеДобавлено: Ср дек 17, 2014 12:21 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
Переполнение будет, а как в этом случае поведет себя пурик - я не знаю. Или будет то же самое число (как самое минимальное возможное), либо 0. Также пурик может в дальнейшем не учитывать бит знака (тут нет явного задания типа переменной - со знаком или без), тогда получится 2147483648 (если без знака, то возможные значения от 0 до 2^32). Но скорее всего будет 0

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: загадка для вундеркиндов
СообщениеДобавлено: Ср дек 17, 2014 7:44 am 
Не в сети
док

Зарегистрирован: Сб окт 31, 2009 7:44 am
Сообщений: 154
Благодарил (а): 85 раз.
Поблагодарили: 3 раз.
Пункты репутации: 0
Пётр
гениальности не хватило:). Какое решение против переполнения?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: загадка для вундеркиндов
СообщениеДобавлено: Ср дек 17, 2014 3:34 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
Добрался наконец до компа, прога просто валится с ошибкой Integer Overflow. Я думал, что пурик как-то обрабатывает данную ошибку... :(

bizdon, используй тип quad (8 байт), и будет счастье :)

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: загадка для вундеркиндов
СообщениеДобавлено: Ср дек 17, 2014 7:34 pm 
Не в сети
док

Зарегистрирован: Ср апр 16, 2014 5:56 pm
Сообщений: 113
Благодарил (а): 7 раз.
Поблагодарили: 6 раз.
Пункты репутации: 5
Цитата:
Какое решение против переполнения?

Код:
1
2
3
4
 
x=-2147483648
y=Abs(x/(-1))
Debug y



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: загадка для вундеркиндов
СообщениеДобавлено: Ср дек 17, 2014 8:06 pm 
Не в сети
док

Зарегистрирован: Сб окт 31, 2009 7:44 am
Сообщений: 154
Благодарил (а): 85 раз.
Поблагодарили: 3 раз.
Пункты репутации: 0
Цитата:
bizdon, используй тип quad (8 байт), и будет счастье

знак не получается правильный!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: загадка для вундеркиндов
СообщениеДобавлено: Ср дек 17, 2014 8:08 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
Т.е. такой код неправильно работает? По моему все правильно...
Код:
1
2
3
x.q=-2147483648
y.q=x/-1
Debug y


_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: загадка для вундеркиндов
СообщениеДобавлено: Ср дек 17, 2014 10:25 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6306
Благодарил (а): 19 раз.
Поблагодарили: 188 раз.
Пункты репутации: 48
bizdon писал(а):
знак не получается правильный!

Всё верно, минус поделить на минус будет плюс.

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: загадка для вундеркиндов
СообщениеДобавлено: Пт дек 19, 2014 9:46 am 
Не в сети
док

Зарегистрирован: Сб окт 31, 2009 7:44 am
Сообщений: 154
Благодарил (а): 85 раз.
Поблагодарили: 3 раз.
Пункты репутации: 0
я "q" подставлял только для "x"..
Да, теперь всё работает!


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB