c语言中0为假,其余非0为真。
一。算术操作符:+,-,*,/,% ; 6/5=1 ;6.0/5=1.2(两端至少一个是浮点数,可以算出小数);%两端必须是整数
二。移位操作符:<< , >> ;
int a=2;
int b=a << 1; //把a的二进制位向左移动一位(32位)
00000000 00000000 00000000 00000010 -> 00000000 00000000 00000000 00000100
左移:左边丢弃,右边补0
右移:1.算数右移:右边丢弃,左边补原符号位(正0负1);2.逻辑右移:右移丢弃,左边补0
整数的二进制表示形式:
原码:直接根据数值写出的二进制序列
反码:原码的符号位不变,其他位按位取反
补码:反码+1
负数:-1
存放在内存中,存放的是二进制的补码
三。位操作符(整数):& 按(二进制)位与,|按位或,^按位异或·
a&b(与):相同为1
00000000 00000000 00000000 00000101
00000000 00000000 00000000 00000011
00000000 00000000 00000000 00000001
a|b(或):只要对应的二进制位有一个为1则为1
00000000 00000000 00000000 00000101
00000000 00000000 00000000 00000011
00000000 00000000 00000000 00000111
a^b (异或):相同为0,相异为1
00000000 00000000 00000000 00000101
00000000 00000000 00000000 00000011
00000000 00000000 00000000 00000110
a^a = 0;
0^a = a;
四。赋值操作符 = ;a = a+100,a+=100;
// = 赋值
// == 判断相等
五。单目操作符--只有一个操作数
!逻辑反 , !=不等于
sizeof()
sizeof括号中的表达式是不参与计算的
例子:char s = 2;
int a = 10;
printf(“%d\n”,sizeof(s=a+2));//输出2,起作用的是(char)s
~ 对一个数的二进制按位取反(包括符号位)
&a // &--取地址操作符
printf(“%p\n”,&a);
int *pa = &a;//pa是用来存放地址的,*说明pa就是一个指针变量
int a = 20;
*pa = 20;//*--解引用操作符-间接访问操作符
printf(“%d\n”,a);//20
六。关系操作符
七。逻辑操作符
int i=0,a=0,b=2,c=3,d=4;
i=a++ && ++b && d++; // a=1,b=2,c=3,d=4
i=a++ || ++b || d++; // 1334
&&只要遇到 假 就不算了
||只要遇到 真 就不算了
八。条件操作符
三目操作符
b = (a>5 ? 1 : -1);
逗号表达式//从左向右依次计算,但整个表达式的结果是最后一个表达式的结果
int d=(c=5,a=c+3,b=a-4,c+=5);