Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1703548
  • 博文数量: 358
  • 博客积分: 2180
  • 博客等级: 大尉
  • 技术积分: 1810
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-17 13:47
文章分类

全部博文(358)

文章存档

2016年(17)

2015年(55)

2014年(9)

2013年(67)

2012年(181)

2011年(29)

分类:

2012-03-21 13:53:43

一.“=” 不等于 “==”:
1.比较符号“==”写为赋值符号“=”导致错误。为了避免编译器的警告,不应该简单地将其关闭,而是应该显示地进行比较
ex:

点击(此处)折叠或打开

  1. if(x=y)
  2. {
  3.  foo();
  4. }
  5. //应该写成:
  6. if((x=y) != 0)
  7. {
  8.  foo();
  9. }

注:判断一个函数的返回值是否等于一个常量的值或者常数的时候,可以写成类似于下面的形式:
if(0 == function())
{
 foo();
}
2.把赋值符号写成比较符号导致错误。

点击(此处)折叠或打开

  1. if((filedesc == open(argv[i],0)) < 0)
  2.  error();

分析:== 运算的结果只能是0或者1,有缘不能小于0,error()永远没有机会执行。
 
二:&和|不同于&&和||:
&和|是按位与和或,&&和||是逻辑运算符(与和或)
 
三:程序中的“贪心法”:
ex:
y = x/*p;  /*p指针指向除数*/
分析:但是编译器会自动把/*当做注释开始处理,不能达到目的。应该写成
y = x / (*p);
 
四:整型常量
如果整型常量的第一个字符是数字0,那么该常量被视作八进制数。
 
五:字符与字符串
单引号包起来的字符事实上是一个整数,整数值对应于该字符在编译器采用的字符集的序列值。如'a'与0141(八进制)97(十进制)完全一致。
双引号引起来的字符串代表一个指向无名数组的起始字符的指针。该数组被双引号之间的字符以及一个'\0'初始化。
阅读(675) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~