- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C运算符与表达式分析
运算符与表达式;运算符;注意:
对于除,若两个操作数都是整数,结果为整数(商部分)。
1/2=0 5/2=2
%通常称为取模运算,两个操作数必须都是整型数,结果为余数,余数的符号与左边数的符号等同。
3%2=1 -3%2=-1 3%-2=1 -3%-2=-1 8%4=0
;++和—有前置方式和后置方式。前置方式使操作数增1(或减1),新值参与表达式的运算;后置方式是在操作数参与表达式运算后其值增1(或减1)。;1.2 关系运算符;关系运算符的优先级为(括弧中运算符的优先级相同):(、=、、=)高于(==、!=)。关系运算符的优先级比算术运算符低,但比赋值运算符(=)高。如:
int a = 5, b = 3, c = 6, d;
d = a b == c; //等价于d = ((a b) == c); d的值为0
d = a == b c; //等价于d = (a ==( b c)); d的值为0
d = a b = c; //等价于d = ((a b) = c); d的值为1
可以使用()来改变运算符的计算次序。;条件语句中用“==”来判断浮点数是否相等,结果是不等,但d1+d2输出结果却是7.7777。两个实型数即便输出结果完全一样,其内部值也可能不一样。判断两个实数是否相等的正确方法是:判断两个实数之差的绝对值是否小于一个给定的允许误差数,如判断d1是否等于d2时,应改为:
fabs(d1 +d2-7.7777) = 1e-6
其中,fabs()是计算绝对值的一个库函数,使用时要包含头文件math.h。;1.3 逻辑运算符;因C++将逻辑值保存为整数值,这样使得逻辑值可参与所有的运算,而且逻辑运算符可作用于所有类型的值,而没有语法错误提示。这是C/C++语法不严密之处。读者应注意避免。;1.4 赋值运算符;赋值运算符;1.5 位运算符;1.5.2 位逻辑运算符;位运算符;1.6 new和delete;在使用完毕new申请的内存空间后,用户需要释放该内存空间。如果用户只申请内存空间,并不释放,会占用大量的内存空间,使系统运行速度变慢,甚至会造成系统崩溃。因此,在使用完申请的内存空间后,用户需要使用delete释放申请的内存空间。下面代码删除以上申请的内存空间。;1.7 运算符的优先级;结合方向;表达式;类型转换;按规则1可知,两个有符号的值之间进行算术运算,其结果是有符号的。一个无符号的值与一个浮点数(如float)进行算术运算,其结果是浮点数(如float)。但两个无符号的值之间进行算术运算(两个值中没有unsigned int),其结果是有符号的int。;规则3。对于bool、char、short、int类型,任一个类型值(无论是否带符号)与unsigned int之间进行算术运算,其结果都是unsigned int类型。注意规则3又是规则2的一个例外。;表达式ch*i+f*2.0-df的计算过程为:
(1) 将ch转换为int型,计算ch*i,即2*1,结果为2,类型为int。
(2) 将f转换为double型,计算f*2.0,即3.0*2.0,结果为6.0,类型为double。
(3) 将ch*i的结果2转换为double型,计算2.0+6.0,结果为8.0,类型为double。
(4) 计算8.0-df,即4.0,整个表达式的结果为4.0,类型为double。
自动类型转换的基本规则是“宽化”或者“提升”,即将较小范围的数值类型转换到较大范围的数据类型。大多数自动类型转换是安全的。; 一般情况下,编译器对于可能导致数据丢失的情形会给出警告,但不完全。不经意之间就可能产生意料不到的结果。例如:
int i = 2, j = 4;
double df;
df = i/j*100; //i/j的值为0,而不是0.5
cout df= df \t; //输出0,而不是50
i = 4.6, j = 5.7; //编译时给出警告
float x = i + j; //x的值并不是10.3,而是9 = 4 + 5
cout x= x \n; //输出9;例如:
int a = 7, b = 2;
double y1 = a / b
此时y1的值是3.0。但如果程序员希望得到3.5,就要对除法的操作数进行强制类型转换如下:
y1 = double(a)/b
或者 y1 = (double)a/b
或者 y1 = a / double(b);
您可能关注的文档
最近下载
- 青春期性教育男生教案.pptx
- 第2课《中国人首次进入自己的空间站》 统编版语文八年级上册.pptx VIP
- (完整版)涉密人员因私出国审查审批表.docx VIP
- 2014款雷克萨斯GX400_汽车使用手册用户操作图解驾驶指南车主车辆说明书电子版.pdf
- 2024-2025学年小学地方、校本课程川教版可爱的四川教学设计合集.docx
- 介护老人护理.pptx VIP
- 生物安全柜检测.pptx VIP
- HIGEN 海坚FDA7000伺服驱动器用户手册.pdf
- DB64T 1967-2023 “互联网+城乡供水”数据规范.pdf VIP
- 化工总控工考试化工总控工初级试卷(化工总控工考试).doc VIP
文档评论(0)