打印

分享:C语言学习中的一些陷阱

[复制链接]
890|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huangfeng33|  楼主 | 2013-12-10 10:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、=和==的不同
在C语言中,符号==是作为赋值运算,符号==是作为比较的。一般而言,赋值运算比比较运算出现得更频繁,因此字符较少的符号=就被赋予了更常用的含义——赋值操作。赋值操作在平常更广泛被我们使用,这就导致了一个潜在的问题,程序员本意要做比较运算,却写成了赋值运算。


2、程序中的“/*”
当C编译器读入一个字符“/”之后又跟了一个字符“*”,那么编译器就必须做出判断:是将其作为两个分别的字符对待,还是合起来作为一个符号对待。不同的编译器对于“/*”会产生不同的影响。
例:要求写一个测试程序,无论是对允许嵌套注释的编译器,还是对不允许嵌套注释的编译器,该程序都能正常通过编译,但是这两种情况下程序执行的结果却不相同。
解:/*/*/0*/**/1这一行表达式,如果编译器允许嵌套注释的话,即可理解为:/*  /*  /0  */  *  */   1。两个/*和两个*/正好匹配,所以上式的值就是1.如果不允许嵌套注释的话,注释中的/*将被忽略。因此上面的表达式可以理解为:/*   /    */   0*  /*   */   1,他的值就是0*1。


3、字符和字符串
用单引号引起的一个字符实际上表示一个整数,例如‘a’的含义和0141(八进制)或者97(十进制)严格一致。
用双引号一起的是字符串,表示的是一个数组起始字符的指针,该数组末尾是以字符‘\0’结束的。
例:char *s=’/’是错误的。正确应该为char *s=”/”。
评分
参与人数 1威望 +4 收起 理由
zhangmangui + 4 赞一个!

相关帖子

沙发
zhangmangui| | 2013-12-10 11:01 | 只看该作者
感谢分享  

使用特权

评论回复
板凳
msblast| | 2013-12-10 17:50 | 只看该作者
多掉几次陷阱人就学精了

使用特权

评论回复
地板
jxmzzr| | 2013-12-11 15:32 | 只看该作者
学习下,C语言编程中确实有一些应该注意的小细节,,感谢楼主分享。记下了。

使用特权

评论回复
5
wenjun_wang86| | 2013-12-12 08:53 | 只看该作者
学习要总结,不错!
第2点提到的小技巧,我用到的不多。我通常用的就是行注释,片注释。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

506

主题

2446

帖子

8

粉丝