Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1698247
  • 博文数量: 210
  • 博客积分: 10013
  • 博客等级: 上将
  • 技术积分: 2322
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-25 15:56
文章分类

全部博文(210)

文章存档

2011年(34)

2010年(121)

2009年(37)

2008年(18)

我的朋友

分类: C/C++

2010-07-29 20:29:17

最简单的表达式仅包含一个字面值常量或变量

不允许为表达式赋值

C++提供一元操作符和二元操作符还有唯一的一个三元条件表达式

有些操作符既可以表示一元也可以表示二元,如*

优先级

结合性:一般除了赋值操作符是右结合的,都是左结合的

求值顺序:操作符并没有规定两个表达式的求值顺序,比如fa()+fb();fafb哪个先执行并没有规定,当左右两个表达式都涉及到同一个对象的时候并改变其值的时候(未定义的行为)

如果两个操作数是负数,则除法结果是正数,求模结果是负数

不能串接使用关系操作符类似于if(x返回bool值,然后与z比较的时候bool值转化为int01

位操作符:~求反,<<左移(补0),>>右移(补符号位或0),&位与,^位异或,|位或

不要混淆了赋值操作符和相等操作符

前自增自减返回的是左值,后自增自减返回的是右值

Sizeof用于表达式的时候,并没有计算表达式的值,获得的是表达式结果的类型长度

数组名在用于sizeof和对数组引用初始化的时候和取地址操作的时候没有退化为指针

逗号操作符,表达式从左向右计算,结果是最右边表达式的值,如果最右边是左值,则逗号表达式的值也是左值

Int a(5),b(6);

Cout<<(a,b)<

(a=20,b)=10;

Cout<

Coub<

&&||当右边表达式确实影响整个表达式求值的时候,才对右表达式求值

New表达式返回新创建对象的指针,可以用初始化变量的方式实现初始化int *p = new ine(1023);如果不提供显示初始化,与内置类型在函数内定义有相同的初始化规则。0或调用默认构造函数。

Int *p = new int;//没初始化

Int *p = new int();//初始化为0

删除0值的指针式合法的

但是删除不是new分配的内存的指针,行为时未定义的

删除指针后,指针为悬垂指针,应当立即置为0

Const int *p = new const int();

Delete p;

隐式类型转换

1.混合类型的表达式中2 条件表达式中专为bool3。初始化某个变量4 函数调用的时候

整形提升,char signed char ,unsigned char ,short ,unsigned short相运算的时候,都转换为int类型

显示类型转换static_cast,dynamic_cast,reinterpret_cast,const_cast;

 

阅读(724) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~