Здравствуйте, уважаемые! Вопрос по СИ(+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
|
Отправлено
RUAL 13 августа 2004 г. 09:34
|
|
|
|
Проблема следующая, требуется оптимально реализовать ветвление
unsigned int my_var;
......
main()
{
if (my_var > 255) ;
}Ежу понятно, что просто проверить старший байт на zero, но как сделать это в СИ?
Конструкции типа:
if(*(&my_var + 1))...;
не прокатывают т. к. смещение происходит не на байт, а на слово :-(...
Вопрос как обратиться к старшему байту переменной типа unsigned int?
Составить ответ
|||
Конференция
|||
Архив
Ответы
- Обращение к байтам int описано в Keil support "C51: ACCESS LOW/HIGH BYTES OF A INTEGER VARIABLE" (+) — Vollan (13.08.2004 15:20, 1107 байт)
- Ответ: "if(*(&my_var + 1))...; " >>>>> if(*((unsigned char *)&my_var + 1)) тогды прокатит:)) — 777~ (13.08.2004 14:55, пустое)
- if (my_var >> 8) правильный ответ... — Programmer (13.08.2004 13:09, 251 байт)
- :) if (!(my_byte>>256)) ... — Bill (13.08.2004 11:44, пустое)
- Языки высокого уровня придумали для того, чтобы таких вопросов не возникало — AndrewGT (13.08.2004 10:39, 386 байт)
- А правильней через union. Только внимательно следите, где на самом деле младший и старший байты для конкретной реализации компилятора — Elektronik (13.08.2004 10:27, пустое)
- Спасибо :-) натолкнули на мысль(+) — RUAL (13.08.2004 09:50, 152 байт)
- if(*((char *)&my_var + 1)) и никогда не слушай L.A.. — DASM (13.08.2004 09:44, пустое)
- Ответ: — lamerok (13.08.2004 09:44, 29 байт)
- а чем так не нравится if(my_var & 0xFF) ? — F8 (13.08.2004 09:43, пустое)
- if (my_var & 0x8000) — =L.A.= (13.08.2004 09:41, пустое)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru