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

Адрес переменной

Читайте также:
  1. GOTO — Переход по адресу
  2. II Измерить среднеквадратическое значение переменной составляющей, среднеквадратичное действующее и амплитудное напряжения после выпрямителя для различных нагрузок.
  3. II Измерить среднеквадратическое значение переменной составляющей, среднеквадратичные действующие и амплитудное напряжения после выпрямителя для различных нагрузок.
  4. III. Адресация в Интернете.
  5. Абсолютные и относительные адреса ячеек
  6. Автоматизация процесса назначения IP-адресов узлам сети - протокол DHCP

 

ff ee dd cc

 

 

9. Преобразование старшего типа к младшему удобно использовать для выделения отдельных частей переменной или константы:

int main(){

unsigned long f = 0x 12345678;

unsigned short of, s;

of = f; //результат приведения типа – только 2 младших байта

s = f >> 16;

printf("%x \n %x \t %x \n", f, s, of);

_getch();

return 0;

}

//вывод на экран: 12345678

1234 5678

31 16 5 0

 

10. С помощью приведения типа можно получить дробную часть числа:

double value, int_value, frac_value;

frac_value = value - int (value); или

 

frac_value = value - static_cast<int> (value);

 

11. При вычислении алгебраических выражений возможны случаи выхода за пределы значений типа. В таком случае поможет приведение типа:

// пример а)

int main(){

int signedVar = 1500000000; //значение signed int должно быть <=2 147 483 647

unsigned int unsignVar = 1500000000;

//значение unsigned int должно быть <=4 294 967 295

signedVar = (signedVar * 2) / 3; //значение превышает диапазон signed int

unsignVar = (unsignVar * 2) / 3; //значение не превышает диапазона unsigned int

 

cout << "signedVar = " << signedVar << endl; //неверное значение

cout << "unsignVar = " << unsignVar << endl; //OK

_getch();

return 0;

}

Результаты работы:

signedVar = -431655765

unsignVar = 1000000000

 

// пример в)

int main(){

int intVar = 1500000000; //1,500,000,000

intVar = (intVar * 10) / 10; //значение больше 2 147 483 647

cout << "intVar = " << intVar << endl; //неверное значение

 

intVar = 1500000000;

intVar = (static_cast<double>(intVar) * 10) / 10; //приведение типа cout << "intVar = " << intVar << endl; //верное значение

_getch();

return 0;

}

Результаты работы:

intVar = 211509811 неверный ответ

intVar = 1500000000 верный ответ

 

12. Обратите внимание на неявное преобразование типов signed char и unsigned char в следующих выражениях (напомним, что для типа char значения, большие 127, представляются отрицательными числами):

int main(){

char c = 0;

unsigned char cs = 239;

int i = cs;

cout << cs <<" " << i << endl; // я 239 (11101111 в 2с/с)

i = c = cs;

cout << c << " " << i << endl; // я -17 (11101111 в 2с/с)

 

c = -30; cs = 0; i = c;

cout << c << " " << i << endl; // т -30 (11100010 в 2с/с)

i = cs = c;

cout << cs << " " << i << endl; // т 226 (11100010 в 2с/с)

_getch();

return 0;

}

 

13. Не надо смешивать в выраженияхтипы int и unsigned. Обратите внимание на неявное преобразование типов int и unsigned:

unsigned ui=1;

int i=-1;

cout << i- ui << endl; //4294967294, а не -2, переменная целая
//подтягивается до беззнаковой

// исправит положение следующий оператор

cout << i- static_cast<int>(ui) << endl; //-2

 


Дата добавления: 2015-07-08; просмотров: 218 | Нарушение авторских прав


Читайте в этой же книге: Результат вычисления выражения характеризуется значением и типом. Операции выполняются в соответствии с их приоритетами. | Классификация операций | Приоритеты (ранги) операций | Арифметические операции | Выделение цифр в целом числе | Операции присваивания | Примеры использования | Логические выражения и примеры их записи | Пример 6. | Правила преобразования типов |
<== предыдущая страница | следующая страница ==>
Примеры преобразования типов| Программирование вычисления алгебраических выражений

mybiblioteka.su - 2015-2024 год. (0.011 сек.)