(时空)复杂度
例如:
n个数字取最大值:n
n个数字求和:1
……
内存
每一个格子都是一个字节:
九大运算符
(选了重要的讲)
赋值运算符
=
+=
*=
/=
%=
<<=
>>=
&=
|=
^=
算数运算符
+
-
*
/
%
+ // 正,单目运算符
- // 负,单目运算符
- 功能?
- 目,元?
- 优先级?
- 结合性?(相同级是从左往右还是从右往左?)
- 结果?
- 左值(首元)可写性?
比较运算符
==
!=
>
<
>=
<=
- 功能?
- 目,元?
- 优先级:较低
- 结合性?(相同级是从左往右还是从右往左?)
- 结果:0/1
- 左值(首元)可写性?
Example:
what does this do?
int a = 1, b = 3;
int x = - 2;
if (a < x < b) { /* do something */ }
事实上等价于:
if ((a < x) < b) { /* do something */ }
(a < x)
输出的0与b再比较。
如果要判断a,x,b的大小,应该用:
if (a < x && x < b) { /* do something */ }
逻辑运算符
&&
||
!
- 0是非,非0都是是。
- 注意“短路”运算。从左往右,情况已定就不往后计算了。
一个好的利用:
if( cnt > 0 && sum / cnt > 5) { /* do something */ }
自增减运算符
++i; // 高优先级
--i; // 高优先级
i++; // 低优先级
i--; // 低优先级
Example 1:
x = 3;
y = x++;
// x = 4, y = 3
Example 2:
x = 3;
y = ++x;
// x = y = 4
Example 3:
x = 0;
N = 100;
while (x++ < N)
{
cout << x << endl;
}
// it will cout from 1 to 100 and x ends up in 101
Example 4:
while (A[i++] < 5)
{
// do something
}
is equivalent to:
while (A[i] < 5)
{
i++;
// do something
}
or
while (A[i] < 5)
{
++i;
// do something
}
Example 5:
i = 3;
y = i+++++i;
??? Compiler Dependent!
不同的编译器不同!
赋值
=
Example:
A = B = C = 0;
is equivalent to:
A = (B = (C = 0));
类似的连续运算:
cout << ……
cout
的返回值是cout
!
ALL RIGHTS RESERVED © 2020 Teddy van Jerry
欢迎转载,转载请注明出处。