小结
表格7-2列出了C++中运算符的优先级,顺序为从高到低。大多数运算符的结合性都是从左至右的。单目运算符,赋值运算符和?运算符的结合性是从右向左的。下面的表格中列出的部分运算符是我们目前还没有学习到的,其中许多都是在面向对象的编程中用到的。
优先级 | 运算符 |
最高优先级 | () 组运算 [] 访问数组 -> 通过指针访问成员 :: 范围运算符 . 对象的成员 |
| ! 逻辑非 ~ 逐位取反 ++ 前缀自增 -- 前缀自减 - 负号 * 去引用 & 取地址 sizeof 返回字节大小 new delete typeid type-casts |
| . * -> * |
| * / % |
| + - |
| << >> |
| < <= > >= |
| == != |
| & |
| ^ |
| | |
| && |
| || |
| ?: |
| = += -= *= /= %= >>= <<= &= ^= |= |
| , |
|
|
|
|
表7-2 C++中运算符的优先级
本章练习
1. 如何声明一个int类型的变量,其名称为test,它的初始化值为100,程序不能修改其值。
2. 限定字volatile 告诉编译器一个变量有可能被该程序之外的因素所修改,对吗?
3. 在含有多个文件的工程中,我们可以用什么样的修饰字来使得一个文件中可以感知到在别的文件中声明的变量?
4. 静态的局部变量有什么重要的特性?
5. 编写一个程序,其中有一个函数叫做counter(),用来对函数被调用的次数进行统计,并返回该次数。
6.考虑下面的代码段,其中那个变量最好被限定为是寄存器变量?
int myfunc()
{
int x;
int y;
int z;
z = 10;
y = 0;
for ( x = z; x< 15; x++ )
{
y += x;
}
return y;
}
7. 运算符&和&&的区别是什么?
8. 下面的语句是什么意思?
x *=10;
9. 扩展函数show_binary(),使其能显示出一个unsigned int类型数据的全部比特位,而不仅仅是显示出高8位。