第一章:C语言关键字(4)

2019-04-14 23:24

B), if((fTestVal >= -EPSINON) && (fTestVal <= EPSINON)); //EPSINON 为定义好的精度。

哪一组或是那些组正确呢?我们来分析分析:

float 和double ?类型的数据都是有精度限制的,这样直接拿来与0.0 比,能正确吗?明显不能,看例子: 的值四舍五入精确到小数点后10位为:3.1415926536,你拿它减去0.00000000001 然后再四舍五入得到的结果是多少?你能说前后两个值一样吗?

EPSINON 为定义好的精度,如果一个数落在[0.0-EPSINON,0.0+EPSINON] 这个闭区间内,我们认为在某个精度内它的值与零值相等;否则不相等。扩展一下,把0.0 替换为你想比较的任何一个浮点数,那我们就可以比较任意两个浮点数的大小了,当然是在某个精度内。

同样的也不要在很大的浮点数和很小的浮点数之间进行运算,比如: 10000000000.00 + 0.00000000001 这样计算后的结果可能会让你大吃一惊。

三、指针变量与“零值”进行比较

指针变量与“零值”进行比较的if 语句怎么写?

int* p = NULL;//定义指针一定要同时初始化,指针与数组那章会详细讲解。 A), if(p == 0); if(p != 0); B), if(p); if(!p);

C) , if(NULL == p); if(NULL != p);

哪一组或是那些组正确呢?我们来分析分析:

A)写法:p 是整型变量?容易引起误会,不好。尽管NULL 的值和0 一样,但意义不同。 B)写法:p 是bool 型变量?容易引起误会,不好。

C)写法:这个写法才是正确的,但样子比较古怪。为什么要这么写呢?是怕漏写一个“=”号:if(p = NULL),这个表达式编译器当然会认为是正确的,但却不是你要表达的意思。所以,非常推荐这种写法。

四、else 到底与哪个if 配对呢?

else 常常与if 语句配对,但要注意书写规范,看下面例子: if(0 == x)

if(0 == y) error();

else {

//program code }

这个else 到底与谁匹配呢?让人迷糊,尤其是初学者。还好,C 语言有这样的规定:else始终与同一括号内最近的未匹配的if 语句结合。虽然老手可以区分出来,但这样的代码谁都会头疼的,任何时候都别偷这种懒。关于程序中的分界符?{?和?}?,建议如下:

提示:程序中的分界符?{?和?}?对齐风格如下:

注意下表中代码的缩进一般为4 个字符,但不要使用Tab 键,因为不同的编辑器Tab 键定义的空格数量不一样,别的编辑器打开Tab 键缩进的代码可能会一片混乱。

五、if 语句后面的分号

关于if-else 语句还有一个容易出错的地方就是与空语句的连用。看下面的例子: if(NULL != p) ; fun();

这里的fun()函数并不是在NULL != p 的时候被调用,而是任何时候都会被调用。问题就出在if 语句后面的分号上。在C 语言中,分号预示着一条语句的结尾,但是并不是每条C 语言语句都需要分号作为结束标志。if 语句的后面并不需要分号,但如果你不小心写了个分号,编译器并不会提示出错。因为编译器会把这个分号解析成一条空语句。也就是上面的代码实际等效于: if(NULL != p) { ; } fun();

这是初学者很容易犯的错误,往往不小心多写了个分号,导致结果与预想的相差很远。所以建议在真正需要用空语句时写成这样: NULL;

而不是单用一个分号。这就好比汇编语言里面的空指令,比如ARM 指令中的NOP 指令。这样做可以明显的区分真正必须的空语句和不小心多写的分号。

六、使用if 语句的其他注意事项

1、先处理正常情况,再处理异常情况。

在编写代码是,要使得正常情况的执行代码清晰,确认那些不常发生的异常情况处理代码不会遮掩正常的执行路径。这样对于代码的可读性和性能都很重要。因为,if 语句总是需要做判断,而正常情况一般比异常情况发生的概率更大(否则就应该把异常正常调过来了),如果把执行概率更大的代码放到后面,也就意味着if 语句将进行多次无谓的比较。另外,非常重要的一点是,把正常情况的处理放在if 后面,而不要放在else 后面。当然这也符合把正常情况的处理放在前面的要求。

2、确保if 和else 子句没有弄反。

这一点初学者也容易弄错,往往把本应该放在if 语句后面的代码和本应该放在else 语句后面的代码弄反了。

9. C语言switch、case完美组合

既然有了if、else 组合为什么还需要switch、case 组合呢?

一、不要拿青龙偃月刀去削苹果

那你既然有了菜刀为什么还需要水果刀呢?你总不能扛着云长的青龙偃月刀(又名冷艳锯)去削苹果吧。如果你真能做到,关二爷也会佩服你的。^_^。

if、else 一般表示两个分支或是嵌套表示少量的分支,但如果分支很多的话……还是用switch、case 组合吧。其基本格式为: switch(variable) {

case Value1: //program code break; case Value2:


第一章:C语言关键字(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:四年级下册品社教学计划

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: