现在的位置: 首页 > 综合 > 正文

C语言——第三章

2013年05月26日 ⁄ 综合 ⁄ 共 1553字 ⁄ 字号 评论关闭

一.

算术运算符都低于纯算术类运算符,高于赋值类运算符,并且它们结合方式都是从左到右的。例如:int x = 2, y = 3, z; z=3-1>=x+1<=y+2;

这个表达式包括赋值、关系、算术三种运算。其中赋值运算的优先级最低,其次为关系运算,算术运算的优先级最高。因此,先进行算术运算,得:z=2>=3<=5,然后计算2>=3,0(假),得z=0<=5,再计算0<=5,其值为1(真),所以z的值为1.


二.

字符数据的比较按照ASCII码值进行。忧郁字符数据按ASCII码进行存储,故可作为正数参加运算和比较。例如,'a'>0的值为1(真),'a'>100的值为0(假)。


三.

在判断两个浮点数是否相等时,忧郁存储上所产生的误差,会得出错误的结果。例如

1.0/3.0*3.0 == 1.0在数学上是一个恒等式,但是由于1.0/3.0所得值的有效位数有限,并不等于0.3333...,因此上面关系表达式的值为0(假),所以应该避免对两个实数表达式做“相等”或“不相等”的判别。上式可以改成:fabs(1.0/3.0*3.0-1.0)<1e-5fabs是求绝对值函数。只要两个实数之间的差小于10-5次方,就可以认为两个实数相等了。

四.

由于编译器一般具有优化功能,当&&左边为0||左边为1,则停止计算,返回对应的结果。(智能的很~ ~)。

五.

关于swich的应用,可以参考一个例子:http://blog.csdn.net/niushuai666/article/details/7287641

使用switch结构需要注意以下几点:

1.一个switch结构的执行部分是由一些case子结构和一个可缺省的default子结构所组成的复合语句,它们位于一堆花括号之内。

2.Switch的判断表达式只能对正数求值,可以使用字符或整数,但不能使用浮点表达式。Case子结构的表达式应该是整型常数表达式,不能含有变量与函数。例如可以是case 3+4:或者case 'a':  但是不允许是case x+y: 

3.一个switch结构中不能出现两个具有相同值的常数表达式。

4.Switch中的匹配测试只能测试是否成功,不能测试关系表达式或逻辑表达式。

5.C89要求C编译系统应当实现:一个switch结构至少可以包含257case子结构,而C99则要求至少支持1023case子结构。

6.Switch结构可以允许嵌套使用。

六.

牛顿迭代法

x = x - f(x) / f'(x)

资料可以从这里获得:

http://www.matrix67.com/blog/archives/361

http://www.matrix67.com/blog/archives/362

七.

优先决
  括号成员第一; //括号运算符[]() 成员运算符. ->
  全体单目第二; //所有的单目运算符比如++ -- +(正) -(负) 指针运算*&
  乘除余三,加减四; //这个"余"是指取余运算即%
  移位五,关系六; //移位运算符:<< >> ,关系:> < >= <= 等
  等于(与)不等排第七; //即== !=
  位与异或和位或; //这几个都是位运算: 位与(&)异或(^)位或(|) 
  "三分天下"八九十; 
  逻辑或跟与; //逻辑运算符:|| 和 &&
  十二和十一; //注意顺序:优先级(||) 底于 优先级(&&) 
  条件高于赋值, //三目运算符优先级排到 13 位只比赋值运算符和","高//需要注意的是赋值运算符很多!
  逗号运算级最低! //逗号运算符优先级最低
  由于C语言的运算符优先级与C++的不完全一样(主要是增加了几个运算符),所以这个口诀不能完全实用于C++.但是应该能够兼容,大家可以比较一下他们的区别应该就能够很快掌握C++的优先级的!




抱歉!评论已关闭.