Chinaunix首页 | 论坛 | 博客
  • 博客访问: 448542
  • 博文数量: 62
  • 博客积分: 1312
  • 博客等级: 中尉
  • 技术积分: 1555
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-24 18:10
文章分类

全部博文(62)

文章存档

2014年(1)

2013年(5)

2012年(56)

分类: C/C++

2012-03-19 20:50:19

一.“=” 不等于 “==”:
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'初始化。
阅读(2336) | 评论(0) | 转发(2) |
0

上一篇:最近的工作情况

下一篇:windows网络编程

给主人留下些什么吧!~~