Арифметические выражения

Преобразования типов данных

 

Разнообразие типов данных в языке C++ дает программисту возможность выбирать вариант, соответствующий конкретной потребности. Однако такое разнообразие, с дру­гой стороны, усложняет задачу компьютера. Например, сложение двух чисел типа short может выполняться с помощью иных машинных команд, чем сложение двух чи­сел типа long. Когда имеется 11 типов целочисленных данных и три типа данных с плавающей точкой, компьютеру приходится обрабатывать множество различных случа­ев, особенно если в одной операции смешаны данные различных типов. Чтобы не допу­стить возможной путаницы, в языке C++ многие преобразования типов данных выпол­няются автоматически:

 

  • Преобразование данных осуществляется, когда данные одного арифметического типа присваиваются переменной другого арифметического типа.

 

// данные типа int преобразуются в данные // типа float

float tree = 3;

// данные типа float преобразуются

// в данные типа int

int guess = 3.9832;

Результат:

tree = 3.0

guess = 3

  • Преобразование данных осуществляется, когда в выражении содержатся данные разных типов.

 

Когда некоторая операция выполняется над данными двух разных типов, то дан­ные меньшего типа преобразуются в данные большего типа. Например:

 

int i=45;

float f=450.123;

float r=i+f; // результат float

 

  • Преобразование данных осуществляется при передаче аргументов в функции.

Если не знать, что происходит при таких автоматических преобразованиях, то ре­зультаты выполнения некоторых программ могут оказаться для вас неожиданными.

Приведение типов:

 

В общем виде:

(имяТипа) значение

// преобразует значение в данные типа имяТипа

ИмяТипа (значение)

// преобразует значение в данные типа имяТипа

 

Пример:

float f=450.123;

int guess;

guess = (int)(3.9832 + f);

Или

guess = int(3.9832 + f);

Операции и выражения.

Поразрядные логические операции.

Язык С++ поддерживает следующие поразрядные логические операции.

 

• Логическое И (AND) &

• Поразрядное логическое сложение по модулю 2 (XOR – исключающее ИЛИ) ^

• Поразрядное логическое ИЛИ (OR) |

• Поразрядная инверсия ~

 

Каждый бит результата определяется по битам операндов так, как это показано в следующей таблице.

 

Операнд 1 Операнд 2 AND OR XOR

Инверсия требует единственного операнда справа от знака операции ~. Результат образуется поразрядной инверсией всех битов операнда.

 

 

Примеры….

 

int i=17919, /* i=0100 0101 1111 1111 */

j=255; /* j=0000 0000 1111 1111 */

Int r;

r=i^j; /* r=4500 = 0100 0101 0000 0000 */

r=i|j; /* r=17919= 0100 0101 1111 1111 */

r=i&j /* r=255 = 0000 0000 1111 1111 */

r=~j /* r=62280 = 1111 1111 0000 0000 */








Дата добавления: 2016-04-22; просмотров: 848;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.