2. Содержание
• Приоритет операций
• Тернарный оператор
• Логические и битовые операции
• Битовая арифметика
23.05.2019 0:16 Introduction 2
3. Приоритет операций
При рассмотрении выражения,
операторы, имеющие более высокий
приоритет, будут вычислены раньше
операторов с низким приоритетом.
3
5. Приоритет операций
Выражение
• а = b & 0xFF + 5
вычисляется как
• а = b & (0xFF + 5),
А выражение
• а +с >> 1
вычисляется как
• (а + с) >> 1
5
6. Тернарный оператор
синтаксис:
логическое выражение ? выражение 1 : выражение 2
1) Вычисляется логическое выражение.
2) Если логическое выражение истинно, то вычисляется
значение выражение 1, в противном случае — значение
выражение 2.
3) Вычисленное значение возвращается.
пример:
min = (a < b) ? a : b;
6
7. Тернарный оператор
7
int main()
{
unsigned char a, b, min, max;
a = 100; b = 200;
min = (a < b) ? a : b;
max = (a > b) ? a : b;
printf("Result: min = %d, max = %d", min, max);
return 0;
}
Result: min = 100, max = 200
8. Логические и битовые операции
8
Result: ????
int main()
{
unsigned char a, b, r1, r2, r3, r4;
a = 0xF0; b = 0x0F;
r1 = a & b;
r2 = a && b;
r3 = a | b;
r4 = a || b;
printf("Result: r1 = %x, r2 = %xn", r1, r2);
printf("Result: r3 = %x, r4 = %x", r3, r4);
return 0;
}
9. Логические и битовые операции
9
Result: r1 = 0, r2 = 1
Result: r3 = ff, r4 = 1
int main()
{
unsigned char a, b, r1, r2, r3, r4;
a = 0xF0; b = 0x0F;
r1 = a & b;
r2 = a && b;
r3 = a | b;
r4 = a || b;
printf("Result: r1 = %x, r2 = %xn", r1, r2);
printf("Result: r3 = %x, r4 = %x", r3, r4);
return 0;
}
10. Битовая арифметика
10
Result: ????
int main()
{
unsigned char a, r1, r2;
a = 41;
r1 = a << 2;
r2 = a >> 2;
printf("Result: r1 = %dn", r1);
printf("Result: r2 = %d", r2);
return 0;
}