Решение практических задач. Определение порядка управления операндов

Страницы работы

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

Содержание работы

Задание 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

Похожие материалы

Информация о работе

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.