Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

C и как определить четное число

Непрочитано 06.08.2012, 11:36  
bass1981
Гражданин KAZUS.RUN
 
Регистрация: 01.09.2007
Сообщений: 897
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию C и как определить четное число

Добрый день прошу прощения за ламерский вопрос...

104: warning: suggest parentheses around comparison in operand of &

Ругается компилятор.... На вот такой код.

if( Rendom & 0x1 ==1)
{return;}

А нужно если четное число то идем по такому сценарию, если нет то по другому, как это в AVRStudio организовать без ошибки. В программах на С реализую всегда так (Borland).
Реклама:
bass1981 вне форума  
Сказали "Спасибо" bass1981
warel (29.06.2019)
Непрочитано 06.08.2012, 11:52  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: C и как определить четное число

Сообщение от bass1981 Посмотреть сообщение
if( Rendom & 0x1 ==1)
if( Rendom & 0x01)
__________________
Осторожно , злой кот
dosikus вне форума  
Эти 2 пользователя(ей) сказали Спасибо dosikus за это сообщение:
bass1981 (06.08.2012), warel (29.06.2019)
Непрочитано 06.08.2012, 12:54  
Yurkin2007
Заблокирован
 
Регистрация: 27.03.2007
Сообщений: 1,327
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
Yurkin2007 на пути к лучшему
По умолчанию Re: C и как определить четное число

Тут дело в следующем. У Вас в скобках два логических оператора: битовое "И" (&) и оператор сравнения (==). Какой оператор будет выполняться первым? Вы привыкли, типа, слева направо. На самом деле в языке С есть таблица приоритетов операторов, то есть какой оператор будет выполняться первым при записи без скобок. Так вот, у Вас сначала выполнится сравнение 1==1, а потом уже битовое "И" результата сравнения и Rendom, так так у == выше приоритет, чем у &. Получится полная ерунда.
Поэтому более слабый оператор нужно взять в скобки для того, чтобы он выполнялся первым.
Код:
if( (Rendom & 0x1) ==1)
{return;}
Об этом Вас компилятор и предупреждал ...
Yurkin2007 вне форума  
Сказали "Спасибо" Yurkin2007
warel (29.06.2019)
Непрочитано 07.08.2012, 20:43  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: C и как определить четное число

Сообщение от Yurkin2007 Посмотреть сообщение
if( (Rendom & 0x1) ==1)
==1 Лишнее не так ли ?
__________________
Осторожно , злой кот
dosikus вне форума  
Сказали "Спасибо" dosikus
warel (29.06.2019)
Непрочитано 07.08.2012, 20:47  
Yurkin2007
Заблокирован
 
Регистрация: 27.03.2007
Сообщений: 1,327
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
Yurkin2007 на пути к лучшему
По умолчанию Re: C и как определить четное число

Да, для данного компилятора ==1 - лишнее.
Yurkin2007 вне форума  
Сказали "Спасибо" Yurkin2007
warel (29.06.2019)
Непрочитано 07.08.2012, 20:54  
nonamedov
Почётный гражданин KAZUS.RUN
 
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: C и как определить четное число

Сообщение от dosikus Посмотреть сообщение
==1 Лишнее не так ли ?
Вообще то, этим условием определяется нечетное число, четное определяется так:
Код:
if(! (Rendom & 0x1))
{return;}
nonamedov вне форума  
Эти 2 пользователя(ей) сказали Спасибо nonamedov за это сообщение:
dosikus (07.08.2012), warel (29.06.2019)
Непрочитано 07.08.2012, 20:58  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: C и как определить четное число

Сообщение от nonamedov Посмотреть сообщение
Вообще то, этим условием определяется нечетное число, четное определяется так:
Собственно зависит от фантазии кодописателя , что он дальше будет делать .
__________________
Осторожно , злой кот
dosikus вне форума  
Сказали "Спасибо" dosikus
warel (29.06.2019)
Непрочитано 07.08.2012, 21:02  
Yurkin2007
Заблокирован
 
Регистрация: 27.03.2007
Сообщений: 1,327
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
Yurkin2007 на пути к лучшему
По умолчанию Re: C и как определить четное число

Вот, наличие оператора return сразу после if() говорит о том, что если Rendom нечётное, то программа тут же вываливается из процедуры. А если Rendom чётное, то продолжает выполнять процедуру.
Тэк что, фильтруется именно чётность
Yurkin2007 вне форума  
Эти 2 пользователя(ей) сказали Спасибо Yurkin2007 за это сообщение:
dosikus (07.08.2012), warel (29.06.2019)
Непрочитано 07.08.2012, 21:08  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: C и как определить четное число

Yurkin2007, Значит у ТС еще и логическая ошибка .
И ка это он -
Цитата:
В программах на С реализую всегда так (Borland).
__________________
Осторожно , злой кот
dosikus вне форума  
Сказали "Спасибо" dosikus
warel (29.06.2019)
Непрочитано 07.08.2012, 21:29  
Yurkin2007
Заблокирован
 
Регистрация: 27.03.2007
Сообщений: 1,327
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
Yurkin2007 на пути к лучшему
По умолчанию Re: C и как определить четное число

Щас спытал Борланд С++ на скорую руку. Оказывается, у него такие выражения мало того, что разрешены, они ещё имеют целое значение, типа
Код:
1 & true = 1
2 & true = 0
Так, что у топикстартера 1==1 заменялся на true, что есть просто 1, и потом спокойно делался битвайз "И" с Rendom. И всё работало как надо ...
Yurkin2007 вне форума  
Сказали "Спасибо" Yurkin2007
warel (29.06.2019)
 
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как 4 байта, принятых по USART превратить в число формата long int Black Jack Микроконтроллеры, АЦП, память и т.д 2 06.06.2012 21:32
Как в CVAVR вывести 3х-значное число на порты? code-by Микроконтроллеры, АЦП, память и т.д 26 23.03.2010 23:23
Как определить конденсатор? Dionisio Электроника - это просто 7 09.07.2008 19:32
Как определить Z состояние? DRFAUST Микроконтроллеры, АЦП, память и т.д 7 21.02.2008 00:32
Как определить мощность трансформатора malyshevsergey Источники питания и свет 9 16.05.2007 23:19


Часовой пояс GMT +4, время: 14:46.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.