基本数据类型与隐式转换

1,基本数据类型;
基本数据类型包括数值类型和字符类型(char),而数据类型又包括整型和浮点型,然后整型包括短整型(short),整型(int)和长整型(long),浮点型又包括双精度(double)和单精度(float)。一共6种,对于这些有
 (1)16位平台  
char         1个字节8位 
short        2个字节16位 
int             2个字节16位 
long         4个字节32位 
指针         2个字节16位  
(2)32位平台  
char         1个字节8位 
short        2个字节16位 
int             4个字节32位 
long         4个字节32位
long long    8个字节64位  
指针         4个字节32位  
(3)64位平台  
char     1个字节 
short     2个字节
 int                 4个字节  
long             8个字节(区别) 
long long    8个字节  
指针             8个字节(区别)



2.对于数据类型的隐式转换:
1,算术运算;
首先,对于所有比int小的类型,包括char, signed char, unsigned char, short, unsigned short,首先会提升为int类型。
在进行运算时,以表达式中最长类型为主,将其他类型位据均转换成该类型,如:如果运算的数中有double型或float型,则其他类型数据均转换成double类型进行运算,因为double比float大。如果运算数中最长的类型为long型.毕竟long是最长的。如果运算数中最长类型为int型,则char型也转换成int型进行运算,这里需要提示下的就是串的第一个元素可以进行加减运算。
然后包含long与unsigned int,32位机器上都是4字节,所以均转换为unsigned long,包含signed与unsigned int,signed会转换为unsigned。如果int恰好为负数,其结果为对unsigned取值个数求模的结果。比如将-1赋给8位的unsigned char,呢么结果就是255(-1对256取模后的值)。unsigned char取值范围0~255。注意:在进行自动类型转换的时候,如果原来的数是无符号数,那么在扩展的时候,高位填充的是0;如果是有符号数,那么高位填充的时符号位!
2.赋值转换
    进行赋值操作时,赋值运算符右边的数据类型必须转换成赋值号左边的类型,若右边的数据类型的长度大于左边,则要进行截断或舍入操作。这个简单说明,int a = 1;double b = 0.1;则a = b;最后a输出是0; 
3.输出转换
    在程序中将数据用printf函数以指定格式输出时,当要输出的盐据类型与输出格式不符时,便自动进行类型转换,如一个long型数据用整型格式(%d)输出时,则相当于将long型转换成整型(int)数据输出;一个字符(char)型数据用整型格式输出时,相当于将char型转 换成int型输出,输出的是ascii码。
注意:较长型数据转换成短型数据输出时,其值不能超出短型数据允许的值范围,否则 转换时将出错。比如,long a=80000; printf("%d",a);运行结果为14464,因为int型允许的最大值为32767,80000超出此值,故结果取以32768为模的余数,即进行如下取余运算:(80000-32768)-32768=14464;然后对于整型与浮点型之间的转换输出就会出错,因为不会转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值