c primer plus第5章总结:运算符、表达式、语句
2016-06-14 23:33
267 查看
1、sizeof 返回 size_t 类型的值,无符号整数类型,printf(" % zd", size_t); 或是用 %u,%lu ;
注:在判断语句时要小心size_t的-1出现。例如:
2、取模运算符:%
对于除法:如果第一个操作数为负数,,得到的模也为负数;如果第一个操作数为正数,模也为正数。
-11/-5 = 2 % -1
11/-5 = -2 % 1
3、增量和减量:++,--
a++:先使用a,再自加;
++a:a先自加,再被使用;
注:如果一个变量出现在同一个函数的多个参数中时,不要将增量和减量运算符用于上面;
当一个变量多次出现在一个表达式里时,不要将增量和减量运算符用于上面;
4、运算符优先级:
转自:http://blog.chinaunix.net/uid-26932153-id-3875923.html
一共有十五个优先级:
1 () [] . ->
2 ! ~ -(负号) ++ -- &(取变量地址)* (type)(强制类型) sizeof
3 * / %
4 + -
5 >> <<
6 > >= < <=
7 == !=
8 &
9 ^
10 |
11 &&
12 ||
13 ?:
14 = += -= *= /= %= |= ^= &= >>= <<=
15 ,
注意 :2单目运算符、
13 条件运算符、 14 赋值运算符,是从右至左。其他都是
从左至右 。
&&比||高,&&、| |都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值。
所以如果有多个判断条件,我们习惯把简单的运算放在前面,如 if (b == 250 && getAvg(array) > 100)
注:在判断语句时要小心size_t的-1出现。例如:
size_t num = array.size(); int loop = 6; if (loop < num - 1) !!!小心num为0,导致num-1为整型最大值
2、取模运算符:%
对于除法:如果第一个操作数为负数,,得到的模也为负数;如果第一个操作数为正数,模也为正数。
-11/-5 = 2 % -1
11/-5 = -2 % 1
3、增量和减量:++,--
a++:先使用a,再自加;
++a:a先自加,再被使用;
注:如果一个变量出现在同一个函数的多个参数中时,不要将增量和减量运算符用于上面;
当一个变量多次出现在一个表达式里时,不要将增量和减量运算符用于上面;
4、运算符优先级:
转自:http://blog.chinaunix.net/uid-26932153-id-3875923.html
一共有十五个优先级:
1 () [] . ->
2 ! ~ -(负号) ++ -- &(取变量地址)* (type)(强制类型) sizeof
3 * / %
4 + -
5 >> <<
6 > >= < <=
7 == !=
8 &
9 ^
10 |
11 &&
12 ||
13 ?:
14 = += -= *= /= %= |= ^= &= >>= <<=
15 ,
注意 :2单目运算符、
13 条件运算符、 14 赋值运算符,是从右至左。其他都是
从左至右 。
&&比||高,&&、| |都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值。
所以如果有多个判断条件,我们习惯把简单的运算放在前面,如 if (b == 250 && getAvg(array) > 100)
++ | 自增运算符 | ++变量名/变量名++ | 单目运算符 |
-- | 自减运算符 | --变量名/变量名-- | 单目运算符 |
* | 取值运算符 | *指针表达式 | 单目运算符 |
& | 取地址运算符 | &左值表达式 | 单目运算符 |
! | 逻辑非运算符 | !表达式 | 单目运算符 |
~ | 按位取反运算符 | ~表达式 | 单目运算符 |
sizeof | 长度运算符 | sizeof 表达式/sizeof(类型) |
?: | 条件运算符 | 表达式1? 表达式2: 表达式3 | 右到左 | 三目运算符 |
= | 赋值运算符 | 变量=表达式 |