8-1
/*
逗号运算符:表达式1, 表达式2,表达式3
取最后一个表达式的值
一、自动类型转换
多种类型进行混合运算,系统会将所有的数据类型转换为类型最大的那种,然后再进行计算
int --> long --> double
注意:char short之间不会相互转换,直接转换为int类型
注意:float自动转换为double
二、强制类型转换
(强制转换的类型)(表达式)
*/
#include <stdio.h>
int main()
{
//3 + 5.5 = 3.0 + 5.5 = 8.5
printf("%f \n" , 3+5.5);
char ch= 'a';
int i = 2 ;
double d = 3.5;
printf("%f \n" , ch + i + d);//97 + 2 + 3.5 = 99.0 + 3.5 = 102.5
float f = 5.6;
double d2 = i + f;//2.0 + 5.6 = 7.6
printf("%f \n" , d2);
}
8-2
/*
二、强制类型转换
(强制转换的类型)(表达式)
*/
#include <stdio.h>
int main()
{
float f2 = 7.5;
printf("%d \n" , (int)f2);
printf("余数为:%d \n" , (int)f2%3);
char ch02 = (char)65;
printf("ch02 = %c \n" , ch02);
}
8-3
/*
3、赋值时的类型转换
当左右类型不一致时,需要进行类型转换,将右边的类型转换为左边的类型,这种转换系统自动进行。
3.1实型数据→整型:直接取整,舍弃小数部分。
3.2字符型或整型数据→实型:数值不变,补足相应的有效位数。
3.3单精度实型→双精度实型:数值不变,有效位数扩展到16位,以8个字节存储;双精度实型赋值给单精度实型时,只截取前面7位有效数字,以4个字节存储。
3.4字符型→整型:将ASCII码值赋给最低的8位 。
3.5整型→字符型:只截取最低的8位赋给字符型变量。
占位数多的→位数少的:截取低位赋值。
占位数少的→位数多的:数据直接赋给低位,高位符号扩充。
*/
#include <stdio.h>
int main()
{
int i1 = 10 , i2 = 20 , i3 = 97 , i4 = 5896;
double d1 = 5.5 , d2 = 6.9;
char ch1 , ch2 = 'A' , ch3;
float f1 = 8.888877789999998,f2 = 5.08;
i1 = d1;//5
printf("i1 = %d \n" , i1);
d2 = ch2;//A = 65.000000
printf("d2 = %f \n" , d2);
d2 = f1;//8.8888 6~7
printf("d2 = %f \n" , d2);
i2 = ch2;//A = 65 I2 = 65
printf("i2 = %d \n" , i2);
ch3 = i4;//5896 1011100001000 00001000 = 8
printf("ch3 = %c \n" , ch3);
printf("%d \n" , ' ');
}
8-4
/*
printf():输出函数
(1)“格式控制”是用双撇号括起来的字符串,也称“转换控制字符串”,它包括三种信息。
①格式说明。格式说明由“%”和格式字符组成,如%d、%f等。
②普通字符。普通字符即需要原样输出的字符。
③转义字符:无法用单个字符描述的一些特定操作,如\n(换行)、\t(跳到下一个水平制表位)等。
(2) “输出表列”是需要输出的一些数据,可以是常量、变量或表达式。
*/