99Game 模拟器研究 Ascent 's Archiver

whitehack 发表于 2008-2-21 20:31

[原创-速成教学.抛开烦琐]3.新手-跟我一起学C++ -运算符与操作符

[code]
//先强调一下.我这只是速成.其他一切罗嗦.乱七八糟的东西不理.
//强调速成.理解C++? ?
//要系统学习的请去找专业的资料
[/code]
[hr]

[b]赋值Assignation (=)[/b]
[code]
赋值运算符的功能是将一个值赋给一个变量。

a = 5;
//a 等于5
不要告诉我? 等于号(=)是什么不知道;

数学运算符Arithmetic operators ( +, -, *, /, % )
C++语言支持的5种数学运算符为:

+ 加addition
- 减subtraction
* 乘multiplication
/ 除division
a =5;
b=3;
//例子
c= a*b;
//c等于 15
//不要告诉我你不知道 加减乘除是什么
% 取模module
取模运算是取两个整数相除的余数

a = 11 % 3;
变量a的值将会为结果2,因为2是11除以3的余数。

[/code]

[hr]
[b]组合运算符Compound assignation operators (+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=)[/b]
[code]
这个我们先不理. 完全可以通过上面的数学运算符实现.
[/code]

[hr]
[b]关系运算符Relational operators ( ==, !=, >, <, >=, <= )[/b]
[code]
我们用关系运算符来比较两个表达式。
关系预算的结果是一个bool值,根据运算结果的不同,它的值只能是真true或假false。

== 相等Equal
!= 不等Different
>? 大于Greater than
<? 小于Less than?
>=? 大于等于Greater or equal than
<= 小于等于Less or equal than


(7 == 5) //将返回false.
(5 > 4) //将返回true.
(3 != 2) //将返回true.
(6 >= 6) //将返回true.
(5 < 5) //将返回false


除了使用数字常量,我们也可以使用任何有效表达式,包括变量。假设有a=2, b=3和c=6,

(a == 5) //将返回false.

(a*b >= c) //将返回true 因为它实际是(2*3 >= 6)

(b+4 > a*c) //将返回false因为它实际是(3+4 > 2*6)

((b=2) == a) //将返回true.

[/code]
[b][i]注意:运算符= (单个等号)不同于运算符== (双等号)。第一个是赋值运算符(将等号右边的表达式值赋给左边的变量);第二个(==)是一个判断等于的关系运算符,用来判断运算符两边的表达式是否相等。因此在上面例子中最后一个表达式((b=2) == a),我们首先将数值2赋给变量b,然后把它和变量a进行比较。因为变量a中存储的也是数值2,所以整个运算的结果为true。[/i][/b]

这个在以后的例子学习中会知道 返回的bool 值是干啥用的
[/code]


[hr]

[b]逻辑运算符Logic operators ( !, &&, || )[/b]
[code]
运算符 ! 等同于boolean 运算NOT (取非),它只有一个操作数(operand),写在它的右边。它做的唯一工作就是取该操作数的反面值,也就是说如果操作数值为真true,那么运算后值变为假false,如果操作数值为假false,则运算结果为真true。它就好像是说取与操作数相反的值。例如:

!(5 == 5) //返回false,因为它右边的表达式(5 == 5)为真true.
!(6 <= 4) //返回true因为(6 <= 4)为假false.
!true //返回假false.
!false? //返回真true.

逻辑运算符&&和||

&& 相当于 and
|| 相当于 or



例如 :

( (5 == 5) && (3 > 6) ) //返回false ( true && false ).
( (5 == 5) || (3 > 6)) //返回true ( true || false ).


[/code]


[hr]
[b]条件运算符Conditional operator ( ? )[/b]
[code]
condition ? result1 : result2 (条件?返回值1:返回值2)

例子
7==5 ? 4 : 3 //返回3,因为7不等于5.
7==5+2 ? 4 : 3 //返回4,因为7等于5+2.
5>3 ? a : b //返回a,因为5大于3.
a>b ? a : b //返回较大值,a 或b.

意思就是按照? 前面的表达式来判断返回哪一个.如果是ture? 那么返回? ? :? 符号前的?
反之? 返回? : 符号后的

[/code]


[hr]
[b]位运算符Bitwise Operators ( &, |, ^, ~, <<, >> )[/b]
[code]
//位运算符以比特位改写变量存储的数值,也就是改写变量值的二进制表示:


&? ? AND?? //逻辑与? ? ? ? ? ? ? Logic AND
|? ?? OR? ? ? //逻辑或? ? ? ? ? ? ? Logic OR
^? ?? XOR?? //逻辑异或? ? ? ? ? ? Logical exclusive OR?
~? ? NOT?? //对1取补(位反转)?? Complement to one (bit inversion)
<<? SHL?? // 左移? ? ? ? ? ? ? ? Shift Left
>>? SHR? //右移? ? ? ? ? ? ? ? Shift Right

[/code]

[hr]
[b]变量类型转换运算符Explicit type casting operators[/b]
[code]
//变量类型转换运算符可以将一种类型的数据转换为另一种类型的数据

int i;
float f = 3.14;
i = (int) f;? //这两种转换方式都是可以的.这个兼容C
i = int ( f ); //C++ 特有的方式? 构造函数方式? ? 以上两种类型转换的方法在C++中都是合法的

//以上代码意思为 将浮点型数字3.14转换成一个整数值(3)
[/code]


[hr]
[b]运算符的优先度Priority of operators[/b]
[code]
//多个操作数组成复杂的表达式时,我们可能会疑惑哪个运算先被计算,哪个后被计算
a = 5 + 7 % 2
//我们可以怀疑它实际上表示:

//a = 5 + (7 % 2) 结果为6,还是 a = (5 + 7) % 2 结果为0?
[/code]
[quote]正确答案当然只有一个 .那就是6?
C++ 运算的优先与我们小学时候学的数学是一样的.从最高级到最低级

我们在写代码的时候完全不需要这样.自己读还要动一下脑袋~~
我们可以直接写成这样
[/quote]
[code]
a = 5 + (7 % 2 );? //值为 6
a = (5 + 7) % 2 ;? //这样的值 就为 0 了? ?
//所以如果你想写一个复杂的表达式而不敢肯定各个运算的执行顺序,那么就加上括号。这样还可以使代码更易读懂。
[/code]

[hr]
[b]其它运算符[/b]
[quote]这个我们在以后学习中慢慢来.我也是刚学?
比如
sizeof()? 运算符
[/quote]

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.