Ср ноя 17, 2010 20:38:40
'AB' == ('A' << CHAR_BIT) | 'B';
#include <stdio.h>
int a = 'ABCD';
int main()
{
printf( "%4.4s\n", (char *)&a );
return 0;
}
DCBA
#include <iostream>
int main()
{
std::cout << "1-ch literal (" << 'A' << "), 2-ch literal (" << 'AB' << ")" << std::endl;
}
1-ch literal (A), 2-ch literal (16706)
Чт ноя 18, 2010 08:31:36
avreal писал(а):...
А что касается третьего массива — его обязан делать любой компилятор, претендующий на звание компилятора языка С.
По стандарту ANSI C89...
If you do give a size, бла-бла-бла. Too many is an error, too few will just initialize the first elements of the array.
Чт ноя 18, 2010 09:30:34
Чт ноя 18, 2010 09:32:33
Чт ноя 18, 2010 09:46:39
Чт ноя 18, 2010 12:02:24
Чт ноя 18, 2010 12:11:29
struct menu
{
char *Pos1;
char *Pos2;
};
Чт ноя 18, 2010 12:14:32
Чт ноя 25, 2010 03:19:54
Вт дек 07, 2010 20:05:57
static void send(byte dta,LcdCmdData cd)
{
if (cd == DATA)
{
PORTD|=_BV(RS);
}
else
{
PORTD&=~(_BV(RS));
}
PORTD&=~(_BV(CS));
SPDR = dta;
while ( (SPSR & 0x80) != 0x80 );
PORTD|=_BV(CS)|_BV(RS);
}
Вт дек 07, 2010 20:16:37
Вт дек 07, 2010 23:34:02
Пт дек 10, 2010 22:09:44
Пт дек 10, 2010 22:41:42
Пт дек 10, 2010 22:53:58
Пт дек 10, 2010 23:03:57
Пт дек 10, 2010 23:20:58
Сб дек 11, 2010 00:47:55
Допустим
1.
0xEE&0xEE&0x0F=0x0E устраивает
но если
2.
0xED&0xEE&0x0F=0x0C
или в общем виде
B&A = С
Сб дек 11, 2010 13:57:30
В любом случае нужно проверять биты совместно, так как если даже в каком-то одном бите несовпадение, то занулить нужно все биты. Одними инверсиями и маскированиями ~ & | ^ не отделаться.T0lik писал(а):IF или конструкцию типа a==c:c?0; не хочу использовать.
uint8_t foo(uint8_t c, uint8_t A)
{
if( c != A ) c = 0;
return c;
}
.global foo
foo:
cpse r24,r22 ; никаких условных переходов, всего две команды
ldi r24,lo8(0)
ret
foo:
cmp r0, r1
ite eq
moveq r0, r1 ; тоже без условнх переходов, хотя эта команда и лишняя
movne r0, #0
bx lr
Сб дек 11, 2010 16:54:58
A^B