//数据类型之间的自动转换
#include<cstdio>
int main()
{
int n1 = 1378;
short n2;
char c = 'a';
double d1 = 7.809;
double d2;
n2 = c; //n2变为97
printf("c=%c,n2=%d\n", c, n2);
c = n1; //c变为’b'
printf("c=%c,n1=%d\n", c, n1);
n1 = d1; //n1 变为7
printf("n1=%d\n", n1);
//浮点数自动转换成整数的规则是去掉小数部分,所以d2变为了7.
d2 = n1; //d2变为7
printf("d2=%f\n", d2);
char cc = 'ab';
printf("%c\n", cc);
return 0;
}
/*
等号的左边是char类型的变量、右边是int类型的变量。语句执行时,先将右边的int值自动转换成一个
char类型的值,再赋值给c。由于char类型的变量只要1个字节,所以自动转换的过程就是丢弃n1的高3字节,
只取n1中最低的那个字节赋值给C。n1的值是1378,表示成十六进制是562,最低的字节是0x62。本条语句执行
完毕后,C的值就是0x62,换算成十进制就是98。98是字母‘b'的ASCII码,因此,本语句执行后,c中就存放着字母’b'.
需要指出的是,本语句的自动转换过程不会改变n1的值。
--书中的解释.
1378 化成二进制为 10101100010;
因为int 为4个字节, char为1个字节(1byte = 8 bit),int转成 char 时,只保留后八位,即c = 1100010(2) = 98(10);
。。
*/
数据类型之间的自动转换
最新推荐文章于 2023-01-31 22:57:10 发布