1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > C语言:强制类型转换 自动类型转换

C语言:强制类型转换 自动类型转换

时间:2021-01-23 09:50:39

相关推荐

C语言:强制类型转换 自动类型转换

C语言中类型转换有两种方式:即强制类型转换和自动类型转换。

一、强制转换比较简单,为:(类型)操作对象。

int n1 = 5, n2 = 2;

float f1 = (float) 5 / 2; //结果为2.5000,若不强制转换结果为2.000

其它类型的自动转换这个一样

二、自动类型转换有以下几个规则

类型级别低于等于int的,运算结果为int类型。高于int类型,保持高级别类型无符号类型级别高于有符号类型(unsigned > signed)浮点型级别高于有符号、无符号整型(与浮点运算,结果都为浮点型)双精度浮点级别高于单精度浮点(double > float)

#include <stdio.h>/*时间:-04-05 19:26作者:sgbl888功能:C语言类型转换(自动转换、强制转换)一、自动转换:由C语言按规则转换1、低于等于int类型的,转换结果为int类型。高于int保持高级别的类型2、unsigned无符号级别高signed有符号的类型3、浮点型级别最高(double>float>unsigned>signed)二、强制转换:(类型)操作对象1、如:(float)10、(int)1.23、(double)1.45678、(short)99*/int main(){//强制转换,只演示float,其它都是 (类型)操作对象int a1 = 5, a2 = 2;float a3 = (float) 5 / 2; //结果为2.5000printf("---------下面为自动类型转换代码段----------\n");int* p; //整型指针变量(后面会讲到,这边先了解下即可),可根据错误信息判断运算结果是什么类型。//有符号不同类型运算,运算结果如果小于等于int,结果为int类型。若高于int类型则为高级别类型char c1 = 65;short s1 = 128;int n1 = 4567;long l1 = 7890;long long ll1 = 12345678;p = c1 + s1; //提示:'int *' from 'int' ,说明c1+s1的结果为int类型p = n1 + l1; //提示:'int *' from 'long int',结果为高级别类型long intp = l1 + ll1; //提示:'int *' from 'long long int',结果为long long int//无符号不同类型运算,跟上面的规则是一样的(其它类型不再演示)unsigned char c2 = 65;unsigned short s2 = 128;unsigned int n2 = 4567;unsigned long l2 = 7890;p = c2 + s2; //提示:'int *' from 'int',同样结果为int类型。//有符号跟无符号运算(同级别类型,无符号高于有符号)p = c1 + s2; //因c1、c2类型都低于int,因为结果还是为有符号intp = n1 + n2; //提示:'int *' from 'unsigned int'。因unsigned>signed,结果为:unsigned intp = s1 + n2; //提示:'int *' from 'unsigned int'。因为n2为无符号int,它又比int高。因此结果为无符号int类型.//有符号、无符号与浮点运算,结果都为浮点,因浮点级别比其它高。dobule又高于floatfloat f1 = 123.4F; //因字面浮点常量在C语言默认是double,加F或f表示float类型double d1 = 4567.8901;p = n2 + f1; //提示:'int *' from type 'float,结果为float类型p = l1 + d1; //提示:'int *' from type 'double',结果为double类型p = 1.234; //提示:'int *' from type 'double',说明字面浮点常量默认为double类型return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。