Chinaunix首页 | 论坛 | 博客
  • 博客访问: 19150
  • 博文数量: 15
  • 博客积分: 560
  • 博客等级: 中士
  • 技术积分: 160
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 17:27
文章分类
文章存档

2011年(1)

2008年(14)

我的朋友
最近访客

分类: C/C++

2008-03-03 23:08:38

4.1 算术运算符


运算符/和%需要特别注意:
  • 运算符/可能产生意外的结果.当两个操作数都是整数时,运算符/通过丢掉分数部分的方法截取结果.因此1/2的结果是0而不是0.5
  • 运算符%要求整数操作数;如果两个操作数中有一个不是整数,那么程序将无法编译通过
  • 当运算符/和运算符%用于负的的操作数时,其结果与具体实现有关.(-9/7可能为-1也可能为-2)

4.1.1 运算符的优先级和结合性


 运算符  结合性
 () [] -> .
从左向右    
 ! ~ ++ -- + - * & (type) sizeof
从右向左                        
 *  /  %
从左向右
 +  -
从左向右
 << >>
从左向右
< <= > >=
从左向右
 == !=
从左向右
 &
从左向右
 ^
从左向右
 |
从左向右
 &&
从左向右
 ||
从左向右
 ? :
从右向左
 = += -= *= /= %= &= ^= |= <<= >>= 从右向左
 ,
从左向右
注:一元运算符= - & *比相应的二元运算符+ -& *的优先级高

注意:位运算符& ^ |的优先级比==和!=低,这意味着为测试表达式必须用圆括号括起来才能得到正确结果
    if ((x & MASK) == 0)....


4.2 赋值运算符

4.2.1 副作用

通常不希望运算符修改他们的操作数,如表达式i+j不会改变i和j的值.但是有一些也会改变,由于这类运算符所做的不仅仅是计算出值,所以称他们有副作用(side effect).简单的赋值运算符改变了运算符左边的操作数,表达式i=0产生的结果为0,作为副作用把0赋值给i.

4.2.2 左值

赋值运算符要求它左边的操作数必须是左值(L-value).左值表示存储在计算机内存中的对象,而不是变量或计算结果.变量是左值,而诸如10或2*i这样的表达式则不是左值.

Q&A

1 ++和--是否可以处理float型的变量?
答:可以.规定自增和自减运算可以用于所有数值类型.但是极少采用自增和自减运算符处理float型变量.

2 C语言有左值,那还有右值吗?
答:有.左值是可以出现在赋值运算符左侧的表达式,而右值则是可以出现在赋值右侧的表达式.因此,右值可以是变量 常量 或者更复杂的表达式.

阅读(443) | 评论(0) | 转发(0) |
0

上一篇:chp3 格式化的输入/输出

下一篇:Open C

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