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

 
 
> растолкуйте следующее Си-свинство.
ветерок
сообщение May 27 2012, 18:45
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 29-11-06
Из: Ижевск
Пользователь №: 22 902



моя не понимать что это означает.Си (winavr) это по-моему полное свинство.

Код
static void advanceCircleByFixedAngle(void)
{
char    d;

#define DIVIDE_BY_64(val)  (val + (val > 0 ? 32 : -32)) >> 6    /* И вот   это,ну вот что за херня с набором символов? */
    reportBuffer.dx = d = DIVIDE_BY_64(cosinus); /* Вот это, что за хрень такая понаписана ?*/
    sinus += d;
    reportBuffer.dy = d = DIVIDE_BY_64(sinus);
    cosinus -= d;
}


Сообщение отредактировал ветерок - May 27 2012, 18:47


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение May 28 2012, 06:15
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (Lebets_VI @ May 27 2012, 22:29) *
в строке: reportBuffer.dx = d = DIVIDE_BY_64(cosinus);
происходит сразу 2 присваивания: переменным "reportBuffer.dx" и "d" присваивается значение DIVIDE_BY_64(cosinus). И в какой последовательности они присваиваются, знает только компилятор sm.gif,
Неправильно. Порядок занесения значений очень даже четко определен. В этом выражении используются два выражения "оператор присваивания" и результат первого (d = DIVIDE_BY_64(cosinus)) является аргументом второго (reportBuffer.dx =). Причем то, что в результате этих выражений в d и reportBuffer.dx оказываются новые значения - всего лишь побочный эффект выражения "оператор присваивания".

QUOTE (ветерок @ May 27 2012, 22:50) *
странно для чего присваивать 7 и сдвигать на 6 бит,если можно было сразу присвоить результирующее значение
Потому что тут используется арифметика с фиксированной точкой, значения имеют 6 битов после запятой. И в данном случае в переменную заносится число 7.0, что сразу видно из такой записи исходника. Если бы там было, как вы предлагаете, написано число 448 - то много народу сломало бы голову, пытаясь ответить на ваш вопрос "что за магическое число 448 тут стоит"?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ветерок   растолкуйте следующее Си-свинство.   May 27 2012, 18:45
- - Lebets_VI   Цитата(ветерок @ May 27 2012, 21:45) моя ...   May 27 2012, 19:10
- - ветерок   о,благо дарю ! А где почитать что в d сначал...   May 27 2012, 19:21
|- - Lebets_VI   Цитата(ветерок @ May 27 2012, 23:21) о,бл...   May 27 2012, 19:29
- - Xenia   Цитата(ветерок @ May 27 2012, 22:45) моя ...   May 27 2012, 19:25
- - ветерок   ещё вопросик если операция происходит с такой то...   May 27 2012, 19:29
|- - Xenia   Цитата(ветерок @ May 27 2012, 23:29) ещё ...   May 27 2012, 19:36
- - SSerge   А учебники не читать, это Ваша принципиальная пози...   May 27 2012, 19:32
- - ветерок   Lebets_VI да точно округление и есть ... Lebets_...   May 27 2012, 19:36
|- - Lebets_VI   Цитата(ветерок @ May 27 2012, 23:36) да д...   May 27 2012, 19:39
- - ветерок   SSerge да мне бесполезно читать,я раз в год прог...   May 27 2012, 19:38
- - ветерок   хм..ясно... я всё же одно понять не могу, реаль...   May 27 2012, 19:50
|- - Lebets_VI   Цитата(ветерок @ May 27 2012, 23:50) хм.....   May 27 2012, 20:05
- - ветерок   Странно... почему мышка крутится покруга тогда а ...   May 28 2012, 03:40
|- - Lebets_VI   Цитата(ветерок @ May 28 2012, 07:40) Стра...   May 28 2012, 05:24
- - ветерок   ну я то уже проанализировал и выдал ,как я это ви...   May 28 2012, 09:41
|- - Сергей Борщ   QUOTE (ветерок @ May 28 2012, 12:41) функ...   May 28 2012, 10:49
|- - ReAl   Цитата(Сергей Борщ @ May 28 2012, 13:49) ...   May 28 2012, 12:35
- - ветерок   Сергей Борщ что-то в этом есть.. Но у меня-то от...   May 28 2012, 11:30
- - ветерок   объясните на пальцах, в википедии нервы кончились.   May 28 2012, 16:59
|- - Lebets_VI   Цитата(ветерок @ May 28 2012, 20:59) объя...   May 28 2012, 19:09
- - ReAl   Извините, конечно, но я сейчас Сергею отвечал. Пер...   May 28 2012, 17:39
- - ветерок   всем объявляю благодарность за отзывчивость я пр...   May 28 2012, 19:13


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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 17:25
Рейтинг@Mail.ru


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