Задание 1. Расставить операции в порядке старшинства:
( ), !, ++, sizeof, /, &&, | =.
Задание 2. Найти ошибку:
float x; //тип указан неправильно, т.к. далее идет сдвиг y на число позиций x, //следовательно, x не может быть типа число
//с плавающей точкой, а может быть только типа
//целое число
int y=0x000F;
scanf (“%f”, &x); //будет вызывать ошибку %, т.к. не подключен библиотечный
//модуль <stdio.h>
y<<=x; //также нужно заключить данный блок в {}, и написать перед
//блоком main().
Задание 3. Определить порядок группирования операндов и вычисления операций в выражениях. Получить результат вычисления выражения, привести полное решение с комментариями.
1. int a,c;
double d, f;
a=(1<2)&&(2>3)||(!1); //(1<2) – истинно, т.е. =1; (2>3) – ложно, т.е. =0; (!1) – т.к. //операнд //слева от знака имеет значение 1 (истинно), то //унарная операция //дает 0 (ложно); 1&&0 – т.к. один из //операндов имеет значение 0, //то в результате логического //умножения будет 0; 0||0 – т.к. не один //из операндов не равны //1, то результат примет значение 0; это и //будет результатом //выражения, присваиваемого переменной a
c=a?12:34; //т.к. логическое выражение a ложное, то результатом операции //является <выражение2>, следовательно, с =34
d=!a?—c:c++; //т.к. логическое выражение a ложное, то !a примет значение //истина, результатом операции является <выражение1>, //следовательно, d = –34.000000
f=a,d; //результатом выполнения операции (,) будет значение //<выражения2>, следовательно выражение равно –34.
2. (0xFA&0x72)^0xC3; //сначала выполняется по приоритету операция (0xFA&0x72), //следом выполняется операция ^
00000000 11111010=0xFA
00000000 01110010=0x72
00000000 11000011=0xc3
00000000 11111010
&
00000000 01110010
_________________
00000000 01110010
00000000 01110010 ^ 00000000 1100001 = 0000000010110001 = B1
3. А=0xFF + 5 //сначала необходимо перевести шестнадцатеричную константу в
//десятичную, а затем уже выполнять операцию сложения двух операндов.
// при переводе числа 0xFF из шестнадцатеричной системы счисления в
//десятичную получим число 255
А = 255 + 5 = 260 // теперь выполняем операцию сложения. Результатом данного
//выражения будет число 260.
4. i = j = 3 + 31 >> 4 // по приоритету сначала выполняется операция сдвига, затем
//операция сложения и лишь затем операция присваивания.
3+31=34 // вычисляется значение выражения.
34 = 100010. //Для выполнения операции сдвига необходимо перевести число 34 в
//двоичную систему счисления.
// выполняя сдвиг, получаем число 00000010=2
J=2 // происходит присваивание переменной J
I=J=2 //происходит присваивание переменной I значения переменной J.
5. 07 & 024 || -8. //по приоритету сначала выполняется побитовая операция &, а затем –
//логическая операция ИЛИ
07 = 111
024 = 10100 // для выполнения побитовой операции & переводим числа в двоичную //систему счисления
0000000000000111
&
0000000000010100 //в результате операции получаем 4
__________________
0000000000000100
4 || -8 //результатом операции будет 1 (истина), т.к. операция считается
//истинной, если хотя бы один из операндов имеет значение истина
//(не равен 0.). В результате получим 1.
6. int x=5,y; // происходит объявление переменных
y= (3*x) %( 2*x++); // по приоритету сначала выполняются операции в скобках, а
//затем операция %
3*x=3*5=15 //операция произведения двух операндов.
2*x++=2*5=10 //операция произведения двух операндов. Причем после
//выполнения этой операции значение переменной x будет
//увеличено на 1, т.е. x примет значение 6.
y=15%10=5 //операция % позволяет получить остаток от деления двух чисел.
y+= (12/5*++x) //по приоритету сначала выполняется операции в скобках,
// а затем выполняется операция присвоения.
12/5 //сначала вычислим выражение 12/5, в результате получаем
//2,4, но т.к. результат должен быть целым, то число округляется
//и получаем в итоге число 2.
2*++x=2*7=14 //операция произведения двух операндов. Операция ++
//увеличила предыдущее значение переменной x на 1.
y+= //операция y+=эквивалентна операции y=y+.
y=5
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.