下图表示了类型自动转换的规则。
double
long
unsigned
【例 3.12】
main(){
float PI=3.14159;
int s,r=5;
s=r*r*PI;
printf("s=%d
",s);
int
char,short
}
谭浩强 C 语言程序设计 2001 年 5 月 1 日
本例程序中,PI 为实型;s,r 为整型。在执行 s=r*r*PI 语句时,r 和 PI 都转换成 double
型计算,结果也为 double 型。但由于 s 为整型,故赋值结果仍为整型,舍去了小数部分。
强制类型转换
强制类型转换是通过类型转换运算来实现的。
其一般形式为:
(类型说明符) (表达式)
其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。
例如:
(float) a 把 a 转换为实型
(int)(x+y) 把 x+y 的结果转换为整型
在使用强制转换时应注意以下问题:
1) 类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成
(int)x+y 则成了把 x 转换成 int 型之后再与 y 相加了。
2) 无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进
行的临时性转换,而不改变数据说明时对该变量定义的类型。
【例 3.13】
main(){
float f=5.75;
printf("(int)f=%d,f=%f
",(int)f,f);
}
本例表明,f 虽强制转为 int 型,但只在运算中起作用,是临时的,而 f 本身的类型并不
改变。因此,(int)f 的值为 5(删去了小数)而 f 的值仍为 5.75。
3.8 算术运算符和算术表达式
C语言中运算符和表达式数量之多,在高级语言中是少见的。正是丰富的运算符和表达
式使C语言功能十分完善。这也是C语言的主要特点之一。
C语言的运算符不仅具有不同的优先级,而且还有一个特点,就是它的结合性。在表达
式中,各运算量参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合
性的制约,以便确定是自左向右进行运算还是自右向左进行运算。这种结合性是其它高级语
言的运算符所没有的,因此也增加了C语言的复杂性。
3.8.1 C 运算符简介
C语言的运算符可分为以下几类:
1. 算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、
自增(++)、自减(--)共七种。
2. 关系运算符:用于比较运算。包括大于(>)、小于(=)、小于等
于(>)六种。
5. 赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位
运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。
6. 条件运算符:这是一个三目运算符,用于条件求值(?:)。
7. 逗号运算符:用于把若干表达式组合成一个表达式(,)。
8. 指针运算符:用于取内容(*)和取地址(&)二种运算。
9. 求字节数运算符:用于计算数据类型所占的字节数(sizeof)。
10. 特殊运算符:有括号(),下标[],成员(→,.)等几种。
3.8.2 算术运算符和算术表达式
1. 基本的算术运算符
? 加法运算符“+”:加法运算符为双目运算符,即应有两个量参与加法运算。如 a+b,4+8
等。具有右结合性。
? 减法运算符“-”:减法运算符为双目运算符。但“-”也可作负值运算符,此时为单目
运算,如-x,-5 等具有左结合性。
? 乘法运算符“*”:双目运算,具有左结合性。
? 除法运算符“/”:双目运算具有左结合性。参与运算量均为整型时,结果也为整型,舍
去小数。如果运算量中有一个是实型,则结果为双精度实型。
〖例 3.14〗
main(){
printf("
%d,%d
",20/7,-20/7);
printf("%f,%f
",20.0/7,-20.0/7);
}
本例中,20/7,-20/7 的结果均为整型,小数全部舍去。而 20.0/7 和-20.0/7 由于有实数
参与运算,因此结果也为实型。
? 求余运算符(模运算符)“%”:双目运算,具有左结合性。要求参与运算的量均为整型。
求余运算的结果等于两数相除后的余数。
【例 3.15】
main(){
printf("%d
",100%3);
}
本例输出 100 除以 3 所得的余数 1。
2. 算术表达式和运算符的优先级和结合性
表达式是由常量、变量、函数和运算符组合起来的式子。一个表达式有一个值及其类型,
它们等于计算表达式所得结果的值和类型。表达式求值按运算符的优先级和结合性规定的顺
序进行。单个的常量、变量、函数可以看作是表达式的特例。
谭浩强 C 语言程序设计 2001 年 5 月 1 日
算术表达式是由算术运算符和括号连接起来的式子。
? 算术表达式:用算术运算符和括号将运算对象(也称操作数)连接起来的、符合 C 语
法规则的式子。
以下是算术表达式的例子:
a+b
(a*2)/c
(x+r)*8-(a+b)/7
++I
sin(x)+sin(y)
(++i)-(j++)+(k--)
? 运算符的优先级:C语言中,运算符的运算优先级共分为 15 级。1 级最高,15 级最低。
在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符
优先级相同时,则按运算符的结合性所规定的结合方向处理。
? 运算符的结合性:C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结
合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式 x-y+z
则 y 应先与“-”号结合,执行 x-y 运算,然后再执行+z 的运算。这种自左至右的结合
方向就称为“左结合性”。而自右至左的结合方向称为“右结合性”。 最典型的右结合
性运算符是赋值运算符。如 x=y=z,由于“=”的右结合性,应先执行 y=z 再执行 x=(y=z)
运算。C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。
3. 强制类型转换运算符
其一般形式为:
(类型说明符) (表达式)
其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。
例如:
(float) a 把 a 转换为实型
(int)(x+y) 把 x+y 的结果转换为整型
4. 自增、自减运算符
自增1,自减1运算符:自增 1 运算符记为“++”,其功能是使变量的值自增 1。
自减 1 运算符记为“--”,其功能是使变量值自减 1。
自增 1,自减 1 运算符均为单目运算,都具有右结合性。可有以下几种形式:
++i i 自增 1 后再参与其它运算。
--i i 自减 1 后再参与其它运算。
i++ i 参与运算后,i 的值再自增 1。
i-- i 参与运算后,i 的值再自减 1。
在理解和使用上容易出错的是 i++和 i--。 特别是当它们出在较复杂的表达式或语句中
时,常常难于弄清,因此应仔细分析。
【例 3.16】
main(){
int i=8;
printf("%d
",++i);
printf("%d
",--i);
printf("%d
",i++);
printf("%d
",i--);
printf("%d
",-i++);
printf("%d
",-i--);
}
谭浩强 C 语言程序设计 2001 年 5 月 1 日
i 的初值为 8,第 2 行 i 加 1 后输出故为 9;第 3 行减 1 后输出故为 8;第 4 行输出 i 为
8 之后再加 1(为 9);第 5 行输出 i 为 9 之后再减 1(为 8) ;第 6 行输出-8 之后再加 1(为 9),
第 7 行输出-9 之后再减 1(为 8)。
小说推荐
- 星卡设计师:开局设计火伊布
- 苏洛花8700万拍下了限量青眼白龙卡牌,遭到了全网嘲讽,没想到,竟然真的召唤出了青眼白龙 这是个类似女武神的世界观,神族以圣战的方式,决定人族的去留 所谓圣战,便是在人类中挑选出九名最强星卡师,与诸神中的九位主神展开对决,若是人类能赢五场,便让人族延续千年 于是青眼白龙从各个星球中挑选有天赋的星卡师
- 玄幻小说箫锦鲤连载中
- 最新章:新书发了
- 亲爱的,你被我设计了!
- 作者所写的《亲爱的,你被我设计了》无弹窗免费全文阅读为转载作品,章节由网友发布
- 都市言情未知连载中
- 最新章:page 32
- 乌龙设计师
- 因为身边没有亲人,袁婉绿早就学会独立自主,也养成了凡事自己来、从不依靠别人的习惯!没想到这个才见第二次面的室内设计师,居然会这么关心她,不但陪着她到医院就诊,而且还因为担心她会发烧、家里没人照料,主动表示愿意让她到他家借住…天底下怎么会有这么好心的人啊?真是令人感动—见鬼了!她只是在向他道谢而已,他
- 都市言情未知连载中
- 最新章:第18章
- 亲爱的你被我设计了
- 原来我被他们联合起来设计了,正在我似梦非梦无法从惊奇中清醒过来时,只听到罗斌在耳边悄悄问:亲爱的,你喜不喜欢我的设计 作者:雨醉霜浓所写的《亲爱的你被我设计了》无弹窗免费全文阅读为转载作品,章节由网友发布
- 都市言情雨醉霜浓完本
- 最新章:尾声
- 人生设计在童年
- 人生设计在童年作者[美]高燕定广西师范大学出版社出版 序言 新东方教育集团文化研究院院长徐小平 我是在2003年5月底在美国休斯敦见到高燕定先生的。我去休斯敦看望一个多年不见的老友。朋友说有一个高燕定先生,在教育方面很有见地,希望我们能够见面认识 见到高燕定先生,真使我有相见恨晚之感。高先生在20世
- 现代文学未知连载中
- 最新章:第67章
- 冒牌设计师
- 新书《傲临都市》已经上传,望新老朋友多多支持,新书要冲个小榜,求收藏,求推荐 拜谢!新书书号3127811 作者:吾爱杨所写的《冒牌设计师》无弹窗免费全文阅读为转载作品,章节由网友发布
- 穿越架空吾爱杨完本
- 最新章:第二六零章 成就!黄粱一梦?(大结局)
- 王牌设计师
- 新书:神灵纪。书号:1365414【起点第二编辑组荣誉出品】他,天资平庸,然而一夜之间拥有王牌设计师的头脑,任何设计都难不倒他.建筑设计 服装设计?广告设计?这些通通都是小菜!但是他却有着一个改不过来的毛病,那就是一旦扯上和女人沾边的事儿,就会犯傻.比如说,有美女脱光衣服送上门来,他也不知道下手…群
- 都市言情爱上云的风完本
- 最新章:想说的话以及关于新书
- 超人气设计
- 《超人气设计》作者:沈娆(VIP手打完结)_TXT下载她只是个小裁缝的女儿,异能不多不少,刚够实现她的梦想,偶然的机遇让她闯进了光怪陆离五彩斑斓的时尚圈,成为一名新晋时装设计师。生存在白天鹅群中,她如何才能破茧成蝶,一飞冲天 作者:所写的《超人气设计》无弹窗免费全文阅读为转载作品,章节由网友发布
- 都市言情未知连载中
- 最新章:第125章
- 命运设计师
- [都市异能《命运设计师》作者:独爱金秋【第一部完结】一个想救出父母的少年,无意间拯救了世界~一面魂镜,控制无数人的命运。一位总师,设计着所有人的蓝图。你的命运其实早就被安排好了,不管你如何改变,都是我想让你改变的,某设计师如是说。第一卷:幻境奇缘第一章:魂镜之母上 公元前221年,秦始皇率军占领齐国
- 玄幻小说未知连载中
- 最新章:第141章