1.if语句中,前面的语句优先级高,后面的语句优先级低。
if(5<=x<=20) 这种写法是错误的
因为根据左结合5<=x的结果不是0就是1 ,在执行下x<=20 是一定为真的,
所以这种写法是没法判断 x是否在范围内的。
与零值做比较
{1.布尔变量(true为真,false为假)
2.整形变量(0为假,1为真)
3.浮点变量(只能比较精度)
4.指针变量(与NULL比较)
switch(整型变量表达式)
case(整型常量表达式)
break并不是switch循环里的。
int N=100;
int a[N]; 这是一种错误的用法
因为N=100;只有在程序运行的时候才会赋值,否则里面只有垃圾值。
a[N] 的长度就成了垃圾值。
do
{
}while;
}while; 这三个要放在同一行,表示do while语句。
当需要多重循环从最内层跳到最外层的时候用goto语句。
1.按位与 &(清0的作用,保留某些值)
通过 源码和掩码(mask)之间的按位与运算。
全1出1,有0出0
2.按位或 | (置1的作用)
有1出1,全0出0
可以通过按位与来设置多个灯的暗灭问题,保持灯的状态不变为0,想改变就为1.
3.按位异或 ^ (交替反转)
相同出0,不同出1.
或者说当掩码为1时,输出原码的反数,为0时输出原码的数。
例如
0 0 1 1原码
1 0 0 1 掩码
1 0 1 0
4.按位取反 ~(构造一个数,并增加程序的可移植性)
~0=“ ”(因为不知道多少位,这样就不用考虑位数)
5.按位左移 —<<(低位补0,高位溢出)
例如 5<<2=20
6.按位右移—>>
(低位舍弃,高位:1.对无符号数和有符号正数补0
2.对于有符号的负数,取决于系统
补0的为逻辑右移,补1的为算术右移)
说明:1.x、y和位数等操作数,都只能是整型或字符型数据
除按位取反为单目运算符,其余为双目运算符。
2.参与运算必须转换为二进制形式
3.&、|、^ 用途:构造1个参数(构造掩码),在进行运算
4.按位取反的用途:
求~0,间接的构造一个全1的数。
进行左移或右移,构造出所需的数。
max(int a[])
a[] = *a, []里面是可以不写数值的。
递归包含两个部分
1.递推
2.回归
不带括号和参数的函数名代表函数的入口地址。
变量作为函数参数是单向传递的
指针作为函数参数是双向传递的