一、运算符
1、运算符优先级
详细描述见:
运算符优先级_百度百科 (baidu.com)
说明:
同一优先级的运算符,运算次序由结合方向所决定。
简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符
2、!(非) &&(与) ||(或)
语句1&&语句2(两个都是真),结果才为->真。
语句1||语句2(其中一个真),结果为->真。
3、非0-->真:1
0-->假:0
4、
位运算符
对2进制操作:~ & | ^ <<左移 >>右移
例子: 假如一个数是一个字节, 一字节=8位 :
12->0000 1100
13->0000 1101
-
~12-> 按位取反 1111 0011 ~13->1111 0010
-
12&13->0000 1100 按位比较,同为1才取1
-
12|13->0000 1101 按位比较,只要有1就取1
-
12^13->0000 0001 按位比较,两个一样为0,不一样为1
-
12<<1-> 000 11000=24=12*2 左移一位,左边挤出去,右边空出来的填0,左移一位,相当于值*2
12<<2-> 00 110000=48=12*2^2 左移2位,左边挤出去,右边空出来的填0,左移2位,相当于值*2^2
-
12>>1->00000 110=6=12/2 右移一位,右边挤出去填上符号符(0:正 1:负),相当于值/2
5、
++ --
前置++(--):先++(--)后赋值
后置++(--):先赋值后++(--)
例子:a++:a自加1 => a=a+1
int main()
{
i=10;
j=++i;
printf(“d%/n d%/n”,i,j) ;
}
输出结果为:i=11 j=11
int main()
{
i=10;
j=i++;
printf(“d%/n d%/n”,i,j) ;
}
输出结果为:i=11 j=10
6、类型转换符(强转)
int a=12.3;(错)
强转:int a=(int)12.3;
7、sizeof 求变量大小(字节)
例子:
int main()
{
int a=12;
printf("%d/n",a)
printf("a size=%d/n",sizeof(a));//printf("a size=%d/n",sizeof(int));
}
8、%
余数 5%2
9、
<= 和 >=不能连续比较 1<5<2(错)
10、
== 等于 = 赋值
11、条件运算符?
三目运算符: 语句1? 语句2: 语句3 如果语句1为真,则执行语句2;如果语句1为假,则执行语句3
例子:
- max=(a>b)?a:b 将a和b二者中较大的一个赋给
- min=(a<b)?a:b 将a和b二者中较小的一个赋给
12、复合型运算符(方便)
+= -= /= *= %=
例子:
int main()
{
int a=10;
a=a+10;//a+=10;
a=a<<1;//a<<=1
}
二、变量