Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Арифметические операции над переменными символьного типа




Пример демонстрирует возможность выполнения арифметических операций над переменными символьного типа (прописные буквы переводятся в строчные):

 

//пример 31.

#include <iostream>

#include <conio.h>

 

using namespace std;

 

int main() 

{

char n_reg, v_reg, c;

c='b' + '%' - '!'; //f   

cout << c << endl; //102(код 'f') = 98(код 'b')+37(код '%')-33(код'!')

 

cout << "Input char \'A\' - \'Z\' " <<endl;

cin >> v_reg;

 

 n_reg = v_reg+32; //32 – значение, на которое отличаются коды
                        //прописных и строчных латинских букв 

cout << v_reg << " " << n_reg << '\n';

_getch();

return 0;

}

-----------------------------------------------------------------------------------------

 

Операции отношения и равенства

!!! Наличие пробелов между символами в знаках операций   <= >= ==   != приводит к ошибкам компиляции. Перестановка символов обычно является синтаксической ошибкой, но в ряде случаев может явиться источником семантической ошибки (досрочного завершения работы программы или неверного ответа).

!!! Ошибочное употребление символа = вместо знака операции == приводит к семантическим ошибкам.

 

//пример 32.

 

#include <iostream>  // «прокрутить» операторы вручную и проверить результат

#include <conio.h>

 

using namespace std;

 

int main()

{

int numb;

cout << "Enter a number: ";   

cin >> numb;

 

cout << "numb < 10 = " << (numb < 10) << endl;

cout << "numb > 10 = " << (numb > 10) << endl;

cout << "numb == 10 = " << (numb == 10) << endl;

 

_getch();   

return 0;  

 }

 

Варианты запуска программы:

Enter a number: 1

numb < 10 is 1

numb > 10 is 0

numb == 10 is 0

 

Enter a number: 10

numb<10 is 0

numb>10 is 0

numb==10 is 1

 

-----------------------------------------------------------------------------------------

Операции инкремента и декремента

 

!!!  При вычислении выражения k = a + (i ++) – d * (-- j);  

 операции выполняются в следующей последовательности:

-- j;

k = a + i – d * j;

i ++;

Объяснить результат !!!

-----------------------------------------------------------------------------------------

 

int i=2, j=0;

 i++;     

 cout << i << endl;  // 3

 --i;

 cout << i << endl;  // 2

 

-----------------------------------------------------------------------------------------

//пример 33.  

Что напечатает программа:

#define PRINT(int) printf("%d\n", int)

x = y = 1;

z  =  x++ - 1; PRINT(x); PRINT(z); z=0; x=2
z  +=  -x++ + ++y; PRINT(x); PRINT(z); z= 0+(-2)+ 2=0; x=3; y=2;
z  =  x/ ++x; PRINT(z); результат неопределенный из-за неопределенного порядка операций

 

-----------------------------------------------------------------------------------------

//пример 34.

#include <iostream>

#include <conio.h>

 

using namespace std;

 

int main()

{ //«прокрутить» операторы вручную и проверить результаты

float x = 2;

x = ++x * 4;

cout << x << endl; //12

 

x = 2;

x = x++ * 4;

cout << x << endl; //9

 

x = 2;

x = --x * 4;

cout << x << endl; // 4

 

x = 2;

x = x-- * 4;

cout << x << endl; // 7

 

_getch();     

return 0;

}

 

Но!!!

//«прокрутить» операторы вручную и проверить результаты

//пример 35.

#include <iostream>

#include <conio.h>

 

using namespace std;

 

int main()  

{   

float x = 2;

++x = x * 4;

cout << x << endl; // 12

    

// x++ = x * 4; error!!! left operand must be l-value

cout << x << endl;
                                     

_getch();     

return 0;

}

-----------------------------------------------------------------------------------------

 

//пример 36.

//«прокрутить» операторы вручную и проверить результаты

#include <iostream>

#include <conio.h>

 

using namespace std;

 

int main()  

{

int var = 10;

cout << var << endl;  // 10

 

var *= 2;                         

cout << var-- << endl; // 20!!!

cout << var << endl;  // 19

 

_getch();     

return 0;

}

-----------------------------------------------------------------------------------------

//пример 37.

//«прокрутить» операторы вручную и проверить результаты

 

#include <stdio.h>    

#include <conio.h>

 

int main()

{

int x = 2, y = 1, z = 0;

x =((x && y) || z);

printf("%d\n", x);           //1

 

printf("%d\n\n", x ||!y &&z); //1  

 

_getch();     

 

x = y = z = 1;

printf("%d\n", ++x || ++y && ++z); //1

printf("%d\n", x);            //2  

printf("%d\n", y);            //1

printf("%d\n", z);        //1

_getch();     

 

x = y = z = 1;

printf("%d\n", ++x && ++y || ++z); //1

printf("%d\n", x);              //2  

printf("%d\n", y);              //2

printf("%d\n", z);              //1

_getch();     

 

x = y = z = 1;

printf("%d\n", ++x && ++y && ++z); //1

printf("%d\n", x);             //2  

printf("%d\n", y);        //2

printf("%d\n", z);             //2

_getch();     

 

x = y = z = -1;

printf("%d\n", ++x && ++y || ++z); //0

printf("%d\n", x);               //0  

printf("%d\n", y);               //-1

printf("%d\n", z);               //0

_getch();     

 

x = y = z = -1;

printf("%d\n", ++x || ++y && ++z); //0

printf("%d\n", x);                //0  

printf("%d\n", y);                //0

printf("%d\n", z);                //-1

_getch();     

 

x = y = z = -1;

printf("%d\n", ++x && ++y && ++z); //0

printf("%d\n", x);                //0  

printf("%d\n", y);                //-1

printf("%d\n", z);                //-1 

 

_getch();     

return 0;

}

-----------------------------------------------------------------------------------------





Поделиться с друзьями:


Дата добавления: 2018-10-15; Мы поможем в написании ваших работ!; просмотров: 181 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Стремитесь не к успеху, а к ценностям, которые он дает © Альберт Эйнштейн
==> читать все изречения...

2413 - | 2361 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.013 с.