Рrintf ("%d %o %c ", c1,c1,c1); //69 105 E

scanf("%d %с", &a1,&a2);

рrintf("%с %d",а1,а2);

c1=getch(); putch(c1);

Вещественные данные выводятся на экран (на печать) или вводятся с клавиатуры с помощью спецификаторов:float Þ %f,%e; double Þ %lf,%le; long double Þ %Lf,%Le.

Например:

float g1=-3.14f; double g2=-3.1415E-45; long double g3=3.141592e34L;

scanf("%f %lf %Lf",&g1,&g2,&g3);

printf("g1=%f g2=%lf g3=%Lfn",g1,g2,g3);

 

Преобразование типов

Преобразования при вычислении выражений

При вычислении выражений производится автоматическое преобразование типов операндов, чтобы привести их к общему типу. Выполнение преобразования зависит от специфики операций и от типа операндов. Однако можно отметить, что при вычислении выражений операнды разного типа преобразуются к типу того операнда, который имеет наибольший размер (более точный).

Пример:

double sd; float ft=2.0f; char c1=40; long k=2L;

sd=ft+(c1+6)/k;

При выполнении фрагмента программы правила преобразования будут использоваться следующим образом. В выражении (c1+6)операнд c1преобразуется к типуint. Затем выражение (c1+6)/kпреобразуется к типу long., а все выражение преобразуется к типу float. Результат всего выражения будет иметь тип double.

Преобразование типов при выполнении операций присваивания

В операциях присваивания тип значения, которое присваивается, преобразуется к типу переменной, получающей это значение. Допускается преобразования целых и плавающих типов, даже если такое преобразование ведет к потере информации.

Пример: long x; char c; c=x+1;

Если х=40 (0x00000028), то с=41(0x29),

но если х=300L (0x0000012C), то с=45(0x2D), а не с=301L (0x0000012D), а т.к. старшие биты не помещаются в тип char.

Следующие преобразования типов гарантируют сохранение точности и неизменность численного значения:

сhar ® short® int ® long;

unsigned сhar ® unsigned short® unsigned int ® unsigned long;