реклама на сайте
подробности

 
 
> Тип данных в Кейле
Desntal
сообщение Jun 10 2011, 05:18
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 10-06-11
Пользователь №: 65 608



подскажите начинающему, к какому типу данных правильно отнести число 900 . Дело в том что кейл одинаково отрабатывает и "uint" и "uchar" с подобным числом и в железе все работает правильно, хотя , если я не ошибаюсь, это двухбайтовая величина и должна быть типа "short"
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Палыч
сообщение Jul 12 2011, 10:49
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(scifi @ Jul 12 2011, 13:55) *
Ну, если мне не верите, проверьте сами. По-вашему выражение (x*5)/8 даёт результат 0 вне зависимости от значения x. Это легко проверить. Или Вы хотите сказать, что результат выражения зависит от уровня оптимизации?
Нет, зависит от "уровня" трансляторописателей, вернее их понимания "духа и буквы" стандарта.

Цитата(scifi @ Jul 12 2011, 13:55) *
Стандарт чётко описывает, что сначала идёт умножение, а потом - деление (кстати, и без скобок тоже, по правилам приоритетов операторов).
Тут с Вами не соглашусь. Приоритет всех мультипликативных операций (*, /, %) одинаков.

Цитата(GetSmart @ Jul 12 2011, 14:18) *
То есть какой-то компилятор может "наплевать" на скобки?
В некоторых случаях - да, может "наплевать". Речь идёт о операциях с одинаковым приоритетом в скобках и за скобками. Нет времени искать точную формулировку в стандарте, но, по-памяти: "порядок выполнения операций может быть изменён, если это не приводит к изменению значения выражения". С учетом того, что при выполнении операций могут возникать всякие-разные "неприятности" (типа переполнения результата), то понятие "неизменный результат" становится очень расплывчатым, и тут - простор для трансляторописателей...
Go to the top of the page
 
+Quote Post
scifi
сообщение Jul 12 2011, 11:19
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Палыч @ Jul 12 2011, 14:49) *
Нет, зависит от "уровня" трансляторописателей, вернее их понимания "духа и буквы" стандарта.

То есть кто-то может неправильно понять стандарт и, соответвственно, написать компилятор с глюком. Спасибо за напоминание об это очевидном факте.

Цитата(Палыч @ Jul 12 2011, 14:49) *
Тут с Вами не соглашусь. Приоритет всех мультипликативных операций (*, /, %) одинаков.

Я имел в виду в данном конкретном выражении: (x*5)/8.

Цитата(Палыч @ Jul 12 2011, 14:49) *
Нет времени искать точную формулировку в стандарте, но, по-памяти: "порядок выполнения операций может быть изменён, если это не приводит к изменению значения выражения".

Нет нужды, я уже нашёл:
Цитата
The semantic descriptions in this International Standard describe the behavior of an abstract machine in which issues of optimization are irrelevant.
...
In the abstract machine, all expressions are evaluated as specified by the semantics. An actual implementation need not evaluate part of an expression if it can deduce that its value is not used and that no needed side effects are produced (including any caused by calling a function or accessing a volatile object).


Цитата(Палыч @ Jul 12 2011, 14:49) *
С учетом того, что при выполнении операций могут возникать всякие-разные "неприятности" (типа переполнения результата), то понятие "неизменный результат" становится очень расплывчатым, и тут - простор для трансляторописателей...

В случае с целыми беззнаковыми числами никакой расплывчатости нет:
Цитата
A computation involving unsigned operands can never overflow, because a result that cannot be represented by the resulting unsigned integer type is reduced modulo the number that is one greater than the largest value that can be represented by the resulting type.

Не разобравшись в ситуации, не давайте вредных советов. Вдруг неокрепшие умы всерьёз воспримут.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Desntal   Тип данных в Кейле   Jun 10 2011, 05:18
- - scifi   Вы что-то другое хотели спросить, потому что этот ...   Jun 10 2011, 05:48
- - Desntal   поясню вопрос: с термометра ds18b20 считываются дв...   Jun 10 2011, 06:10
|- - Палыч   Цитата(Desntal @ Jun 10 2011, 10:10) како...   Jun 10 2011, 06:28
- - Desntal   дополнение к вопросу. фрагмент кода: tval=tval*(...   Jun 10 2011, 06:46
|- - Палыч   Цитата(Desntal @ Jun 10 2011, 10:46) посл...   Jun 10 2011, 07:11
|- - koyodza   Цитата(Палыч @ Jun 10 2011, 10:11) Вы хот...   Jun 29 2011, 19:49
|- - Палыч   Цитата(koyodza @ Jun 29 2011, 23:49) В ко...   Jun 30 2011, 08:59
|- - koyodza   Цитата(Палыч @ Jun 30 2011, 11:59) Вот те...   Jul 11 2011, 20:51
|- - Палыч   Цитата(koyodza @ Jul 12 2011, 00:51) В лю...   Jul 12 2011, 05:42
|- - demiurg_spb   К слову. Все современные компиляторы самостоятельн...   Jul 12 2011, 07:02
|- - Палыч   Цитата(demiurg_spb @ Jul 12 2011, 11:02) ...   Jul 12 2011, 08:48
|- - scifi   Цитата(Палыч @ Jul 12 2011, 12:48) Наскол...   Jul 12 2011, 09:22
||- - Палыч   Цитата(scifi @ Jul 12 2011, 13:22) нафиг ...   Jul 12 2011, 09:43
||- - demiurg_spb   Я думаю что Вы оба правы. Когда можно упростить вы...   Jul 12 2011, 09:50
|||- - GetSmart   Цитата(demiurg_spb @ Jul 12 2011, 14:50) ...   Jul 12 2011, 09:56
|||- - demiurg_spb   Цитата(GetSmart @ Jul 12 2011, 13:56) Док...   Jul 12 2011, 10:03
|||- - GetSmart   Цитата(demiurg_spb @ Jul 12 2011, 15:03) ...   Jul 12 2011, 10:18
||- - scifi   Цитата(Палыч @ Jul 12 2011, 13:43) А, вот...   Jul 12 2011, 09:55
|- - demiurg_spb   Проверил живьём на максимальном уровне оптимизации...   Jul 12 2011, 09:33
- - scifi   По-моему, этот топик просится, чтобы его перенесли...   Jun 10 2011, 07:49
- - Desntal   да, объяснить на пальцах трудно. может так понятне...   Jun 10 2011, 10:55
|- - Палыч   Цитата(Desntal @ Jun 10 2011, 14:55) для ...   Jun 10 2011, 11:13
- - Desntal   Палыч, спасибо, просмотрел файл, теперь все ясно м...   Jun 10 2011, 11:20
|- - Палыч   А, к моему совету (см. пост #6) по поводу исключен...   Jun 10 2011, 11:32
- - scifi   Цитата(GetSmart @ Jul 12 2011, 14:18) То ...   Jul 12 2011, 10:27
- - GetSmart   Цитата(Палыч @ Jul 12 2011, 15:49) Нет вр...   Jul 12 2011, 10:59
|- - Палыч   Цитата(GetSmart @ Jul 12 2011, 14:59) иск...   Jul 12 2011, 13:04


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 15:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.01593 секунд с 7
ELECTRONIX ©2004-2016