juliusun.com
第 8/50 节 冥河C语言教程
变量定义时可以指定类型,但是常量在书写时,并不一定都带有类型。常量默认类型如下表:
说明 | 例子 | 默认类型 |
---|---|---|
不带有小数的数字 | 0 , 1 , 99 | int |
带有小数的数字 | 0.0 , 4.1 | double |
单引号引起的字符 | 'a' , '0' | int (不要误以为是char) |
双引号引起的多个字符 | "Hello world" , "" , "a" , "12345" | char 数组(以后介绍) |
如97默认是int类型,'a'是char类型,0.5默认是float类型。
如果书写代码时,不是默认的常量类型,可以在常量后面加相应的后缀,规则如下表:
类型 | 后缀 | 例子 | 备注 |
---|---|---|---|
long | 小写l或大写L | 3l , 0l , 3L , 0L | 注意,数字必须是不带有小数的。否则按double处理 |
float | 小写f或大写F | 3f , 0.0f ,3F , 0.0F | |
double | 小写l或大写L | 3.0l , 0.0l , 3.1L , 0.0L | 数字必须带有小数,否则按long类型处理 |
如10默认是int类型,而10L或10l是long类型,10.0或10f或10F是float类型,10.0l或10.0L是double类型。
赋值时不同类型可以强制转换,强制转换格式如:
(类型)值
如:
再介绍数据算术运算。
两种相同类型的变量或变量做算术运算时,结果仍然是这种类型,再补充下,char类型同样可以做算术运算。当默认的常量类型和声明的变量类型不同,且赋值时,系统自动将常量转换成变量类型,如float f = 0;编译器自动会认为是float f = 0.0;
需要注意,整数和整数之间进行算术运算,结果仍然为整数,例:
相同类型的小数进行运算时,结果仍然是小数,没什么特别说明的。
重点介绍下不同类型的数值之间的运算。
32位环境为例,不同类型数值进行运算时,系统将其隐式转换成相同类型,再运行运算。规则如下
1、如果算术运算符两边至少有一方为float或double类型,则将两边均转换成double类型再计算。然后两边如果存在doule则结果为double,否则结果再转换成float
2、如果算术运算符两边均为整数类型(包括char)没有float和double类型,则将两边均转换成int类型再进行运算,且结果仍然是int
转换成相同类型运算后,结果会再根据双方类型转化成相应类型。
举例说明:
有了上面的原则,要正确计算1/2的值就好办了,写成如下: