между (unsigned char)~c и ~(unsigned char)c большая разница!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Извините, но Вы, похоже, заблуждаетесь, или хотите ввести в заблуждение окружающих. Если бы Вы использовали "приведение типов в первую очередь", то сравнение сразу заработало бы и этой темы не было бы. Так что, либо Вы использовали не приведение типов, либо его, но только после того, как Вам на это указали.AntonChip писал(а):Приведение типов использовал в первую очередь, ...
Ну вот, теперь он точно не прочтет те разделы, незнание которых rised эти грабли к жизни. (Boooo!hybroid писал(а):оператор ~ возвращает результат с типом ... прямо на грабли.
Код: Выделить всё
if(((unsigned char)ir_code[0] == ~(unsigned char)ir_code[1]) && ((unsigned char)ir_code[2] == ~(unsigned char)ir_code[3]))
{
}
Код: Выделить всё
if(((unsigned char)ir_code[0] == (unsigned char)~ir_code[1]) && ((unsigned char)ir_code[2] == (unsigned char)~ir_code[3]))
{
}То есть, преобразовывали unsigned char в unsigned char же?AntonChip писал(а):~(unsigned char)ir_code[1] - так, не работает
А какое содержание еще может быть у слова "высокоинтеллектуальный"?Pnjom-Penb писал(а):Все же прочтите хотя бы немного о языке Си, хотя бы те два раздела...Может тогда простейшие истины перестанут казаться колдовством и слово "высокоинтеллектуальный" обретет свое первоначальное содержание...
у меня сложилось впечатление, что это не макрос, а флаг...COKPOWEHEU писал(а):Используется ли где-то в коде макрос PS2_USE_USART?
интернет говорит, что у make два потока вывода, то есть указанное мною вышеCOKPOWEHEU писал(а):make > file.txt не работает?
благодаря аккуратности форматирования вашего кода невозможно понять, является ли X=5 единственным оператором блока if или нет. однако, при любом раскладе если условие if не будет выполнено, переменная X окажется не инициализированной.Andrey3885 писал(а):if(status&(1<<1)
X=5;
я о том и писал:WiseLord писал(а):Ну и, более того, тут нет закрывающей скобки в условии if.
т.к. много кода пропущено, нельзя понять, есть там что-то еще или нет, и было ли оно вообще...ARV писал(а):благодаря аккуратности форматирования вашего кода
Знакомился с Си по книгам, так вот там по поводу фигурных скобок говорилось, что група оператороров должна быть взята в фигурные скобки, один оператор брать в фигурные скобки не обязательно. У меня в приведённом примере после if(True) выполняется один оператор.ARV писал(а):благодаря аккуратности форматирования вашего кода невозможно понять, является ли X=5 единственным оператором блока if или нет. однако, при любом раскладе если условие if не будет выполнено, переменная X окажется не инициализированной.
У меня в начале функции при объявлении переменной status, выполняется её инициализация начальным значением 0b10000010. В первой интерации в if проверяется установка бита 1 переменной status, который установлен при инициализации, и соответственно в 1 интерации X присваивается 5. В дальнейшем, X=5 может не выполниться, но как минимум один раз этот оператор выполнится, и X до использования будет инициализирован. Я хочу понять почему компилятор этого не видит.ARV писал(а):отслеживать содержимое глобальных переменных, и переменных, меняемых в других функциях, компилятор не может, поэтому не понимает, выполнится ли и когда именно ваше условие, потому на всякий случай предупреждает, что переменная может оказаться с непредсказуемым значением.
Извеняюсь, ошибся, я писал пример в редакторе ответов форумаWiseLord писал(а):Ну и, более того, тут нет закрывающей скобки в условии if.