14.1. Таблица приоритетов операций (в Турбо Си)
Операции в таблице расположены в порядке убывания приоритетов, операции в одной строке имеют одинаковый приоритет.
|
Операция |
Назначение |
|
[ ] |
Задание элемента массива |
|
( ) |
Вызов функции |
|
. |
Выбор поля структуры |
|
-> |
Выбор поля структуры посредством указателя |
|
++ , - - |
Постфиксный и префиксный инкремент и декремент. Если они встречаются в одном выражении, то постфиксные операции имеют больший приоритет |
|
sizeof |
Определение размера аргумента к байтах |
|
(тип) |
Приведение к типу |
|
~ |
Побитовое отрицание |
|
! |
Логическое НЕ |
|
- |
Унарный минус |
|
& |
Взятие адреса |
|
* |
Обращение по адресу |
|
*, /, % |
Умножение, деление и взятие остатка |
|
+, - |
Сложение, вычитание |
|
<<,>> |
Битовые сдвиги влево и вправо |
|
<,>,<=,>= |
Сравнение |
|
==, != |
Сравнение на равенство и неравенство |
|
& |
Побитовое И |
|
^ |
Побитовое исключающее ИЛИ |
|
| |
Побитовое ИЛИ |
| && |
Логическое И |
|
|| |
Логическое ИЛИ |
|
?: |
Условная операция |
|
=,+=,-=,*=,/=,<<=,>>=,^=, |= |
Присваивание и замещение |
|
, |
Операция запятая |
14.2. Функция для установки палитры (см. 10.1)
В разделе 10.1 мы обещали привести функцию, использование которой позволяет устранить подергивание экрана при смене палитры (при использовании этой функции четвертый тест примера, приведенного в 10.1, . будет работать так, как и задумывалось). Вот эта функция:
void setVgaDAC(RGB pal)
{ int seg_table=FP_SEF(pal),off_table=FP_OFF(pal) ;
asm {
push ds
push es
xor ax,ax
mov es,ax
mov dx,es:[463h]
add dx,6
pop es
in al,dx
nор
nор
test al,08h
jz wait_on
}
wait_off:
asm {
in
al,dx
nор
nор
test
al,08h
jnz
wait off
}
wait_on:
asm {
in
al,dx
nор
nор
test
al,08h
jz wait
on
mov
dx,3c8h
mov
ax,0
out
dx,al
nор
nор
mov
ax,seg_table
mov
ds,ax
mov
si,off_table
mov cx,
(256*3)
mov
dx,3c9h
cld
}
get_reg:
asm
{
lodsb
out
dx,al
nор
nор
loop
get_reg
pop ds
}