参与运算(算术运算和赋值运算)的操作数和结果类型必须一致,当不一致的时候,满足以下条件时,系统自动转换。
两种类型兼容
double和int兼容
目标类型大于源类型,例如:double>int
在自动转换中,转换是不会丢失精度的,经常见到的就是,参与运算的两个操作数,一个是int,一个是double,那么int类型会自动转换成double类型。
对于表达式
如果一个操作数是double型,则整个表达式可以提升为double型,比如前面打8.8折的练习题
求10/3求余数想得到3.333的处理
强制转换:强制类型转换,数据类型一定要相兼容。
当需要丢失精度的时候,系统是不会自动转换,需要程序员来写代码完成转换,例如double3.14到int3的转换,
语法:(数据类型名)待转换的值
注意:以下两种转换是错误的,因强制转化类型要求待转换的类型和目标类型必须是数字。
string age=(int)console.readline();
int age=(int)"33"
int 变量=convert.ToInt32(待转换字符串);
上面的语句的意义:把待转字符串转换成int类型后赋值给变量。
例如:
Console.WriteLine("请输入你的实际年龄");
string s = Console.ReadLine();
int age = Convert.ToInt32(s);注释:convert.ToInt32是将字符串类型转换为数据int类型。
int year = 2012 - (age);
Console.WriteLine("你是{0}出生的", year);
Console.ReadKey();
转换分自动转换和强制转换。
%取余 /除以 也可以取整(操作数都是int就是整除)。
自动转换:
1、隐式转换
C在以下四种情况下会进行隐式转换:
1、算术运算式中,低类型能够转换为高类型。
2、赋值表达式中,右边表达式的值自动隐式转换为左边变量的类型,并赋值给他。
3、函数调用中参数传递时,系统隐式地将实参转换为形参的类型后,赋给形参。
4、函数有返回值时,系统将隐式地将返回表达式类型转换为返回值类型,赋值给调用函数。
2、算数运算的隐式转换
算数运算中,首先有如下类型转换规则:
1、字符必须先转换为整数(C语言规定字符类型数据和整型数据之间可以通用) 。
2、short型转换为int型(同属于整型) 。
3、float型数据在运算时一律转换为双精度(double)型,以提高运算精度(同属于实型) 。
其次,有下面的规则。
当不同类型的数据进行操作时,应当首先将其转换成相同的数据类型,然后进行操作,转换规则是由低级向高级转换。
char shot-->int-->long-->double
double a = 2.365M 是货币
自动转换不会丢失精度的。
强制类型转换:
1、语法:.(int)待转换的数值
double pi=3.14;
int i =(int)pi;//i的值是3
2、函数转换:Convert.ToInt32()
Convert.ToString() Convert.ToDouble()
类型自动转换规则
参与运算
当两个数据类型不一致时,满足下面条件时,系统自动完成类型转换
如果一个表达式里面有一个是double类型,则整个表达式的运算结果为double类型。
强制类型转换:(转换并非万能,字符串不能强制转为int或double类型)
当需要丢失精度的转换时,系统是不会帮我们自动转换的,需要我们程序员来写代码来完成转换。如下
int b=(int)166.78; //结果166
(数据类型名称)转换的数值
字符串转换为数据类型(Convert.ToInt32)转换为int类型
Console.WriteLine("请输入您的年龄!");
string ageInpt = Console.ReadLine();
Console.WriteLine("您输入的年龄为:{0}", ageInpt);
int yers = 2011 - Convert.ToInt32(ageInpt);
Console.WriteLine("您的出生年份是:{0}", yers);
Convert不再仅是内存级别的转换,而是考虑数据意义的转换。Convert是一个加工,改造的过程
Convert.ToInt32(转换字符串) ;
Convert.ToString,每种类型都还有ToString()方法。
所有类型都可以转换成string类型。
当需要丢失精度的转换(如从double3.14到int3的转换,会丢失0.14的精度)时,系统是不会帮我们自动转换的,需要我们程序员来写代码完成转换,转换的语法为:(数据类型名)待转换的值;
注意:强制类型转换要求待转换的类型和目标类型必须都为同一类型。
int 变量=Convert.ToInt32(待转字符串); 上面语句的意义:把待转字符串转换成int类型后赋给变量
强制转换
当需要丢失精度的转换(如从 double3.14到int3的转换,会丢失0.14的精度)时系统是不会帮我们自动转换的,需要我们来写代码完成转换。转换的语法为
(数据类型名)待转换的值
如int b=(int)3.14;
Convert不是仅是内存级别的转换,而是考虑数据意义的转换。Convert是一个加工,改造的过程
convert.toint32(待转换字符串);
Convert.toString 每种类型都还是ToString()方法
学员评论
子爵丶肆2016-04-12
a27160132015-12-01
红枫沫殇2015-07-08
冷圈圈圈圈2014-08-18
MicroFaint2014-04-05
wutongyong2014-03-01
阳光lovesam2014-02-11
克烈MangLai2013-11-28
落雅秋齐2013-06-13
EmptyLife2013-05-30
jk3h5jk435h2013-04-20
Rogarz2013-02-15
人在囧途囧事网2013-02-08
你感兴趣的课程
扫一扫 关注好知微信