1、“||”或运算符,左结合,程序会依次检测每一个这样的条件,如果有任何一个内部条件为真,就无须检测随后的条件了(短路求值)。
2、“&&”与运算符 ,左结合。短路求值,一旦检测到假,便停止检测。
3、"[)"半开区间,[开始值,越界值),越界值(off-the-endvalue). e.g:区间[1,4)包含了1,2,3 。
4、定义包含了声明,但是声明不包含定义,如
int a = 0; //定义并声明了变量 a extern int a; //只是声明了有一个变量 a 存在,具体 a 在哪定义的,需要编译器编译的时候去找。
5、强制类型转换是通过类型转换运算来实现的。其一般形式为:(类型说明符)(表达式)其功能是把表达式的运算结果强制转换成类型说明符所表示的类型
int a = 1; double b = 2.1; cout << "a + b = " << a + (int)b << endl; //输出为a + b = 3
6、在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度:
int a=1; double b=2.5; a=b; cout << a; //输出为 2,丢失小数部分
int a = 1; double b = 2.1; cout << "a + b = " << a + b << endl; //输出为a + b = 3.1
7、
在程序中,局部变量和全局变量的名称可以相同,但是在函数内,局部变量的值会覆盖全局变量的值。下面是一个实例:
实例
#include
<
iostream
>
using
namespace
std
;
// 全局变量声明
int
g
=
20
;
int
main
(
)
{
// 局部变量声明
int
g
=
10
;
cout
<<
g
;
return
0
;
} //输出10
8、运算符
运算符 | 描述 | 实例 |
---|---|---|
& | 如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。 | (A & B) 将得到 12,即为 0000 1100 |
| | 如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。 | (A | B) 将得到 61,即为 0011 1101 |
^ | 如果存在于其中一个操作数中但不同时存在于两个操作数中,二进制异或运算符复制一位到结果中。 | (A ^ B) 将得到 49,即为 0011 0001 |
~ | 二进制补码运算符是一元运算符,具有"翻转"位效果,即0变成1,1变成0。 | (~A ) 将得到 -61,即为 1100 0011,一个有符号二进制数的补码形式。 |
<< | 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。 | A << 2 将得到 240,即为 1111 0000 |
>> | 二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 | A >> 2 将得到 15,即为 0000 1111 |