C语言编程开发入门基础教程(29)
表达式
前面已经提到过表达式,相信大家对表达式也有了一个初步的认识,它是由常量、变量、运算符组合(到以后讲函数时,函数也可以是组成表达式的元素),计算以后返回一个结果值。表达式的结束标志是分号(;),C语言中所有的语句和声明都是用分号结束,在分号出现之前,语句是不完整的。
例如:
1+2;
Counter/3+5;
Height*Width;
表达式本身什么事情都不做,只是返回结果值。在程序不对返回的结果值做任何操作的情况下,返回的结果值不起任何作用,表达式的作用有两点,一个是放在赋值语句的右边,另一个是作为函数的参数(以后再介绍)。
表达式返回的结果值是有类型的。表达式隐含的数据类型取决于组成表达式的变量和常量的类型。因此,表达式的返回值有可能是某种大小的整型,或者是某精度的浮点型,或者是某种指针类型。
这里面就有类型转化的问题了,在前面说整型运算的时候也提到过。类型转化的原则是从低级向高级自动转化(除非人为的加以控制)。计算的转换顺序基本是这样的:
字符型-->整型-->长整型-->浮点型-->单精度型-->双精度型
就是当字符型和整型在一起运算时,结果为整型,如果整型和浮点型在一起运算,所得的结果就是浮点型,如果有双精度型参与运算,那么答案就是双精度型了。
强制转换是这样的,在类型说明符的两边加上括号,就把后面的变量转换成所要的类型了。如:
(int) a;
(float) b;
第一个式子是把a转换成整型,如果原先有小数部分,则舍去。
第二个式子是把b转换成浮点型,如果原先是整数,则在后面补0。
每一个表达式的返回值都具有逻辑特性。如果返回值为非0,则该表达式返回值为真,否则为假。这种逻辑特性可以用在程序流程控制语句中。
有时表达式也不参加运算,如:
if(a||b) …………
5>3?a++:b++;
当a为真时,b就不参加运算了,因为不管b如何,条件总是真。