#include<stdio.h> intmain() { int a = 10; int b = a++;//后置++,先使用a的值,然后a再自增 printf("a = %d , b = %d",a,b);//a = 11 , b = 10 return0; }
后置++,先使用a的值,然后a再自增。
前置++
1 2 3 4 5 6 7
#include<stdio.h> intmain() { int a = 10; int b = ++a;//前置++,先++,再使用,即a先自增,变成11,再把a的值赋给b printf("a = %d , b = %d",a,b);//a = 11 , b = 11 return0; }
前置++,先++,再使用,即a先自增,变成11,再把a的值赋给b。
后置--
1 2 3 4 5 6 7
#include<stdio.h> intmain() { int a = 10; int b = a--;//后置--,先使用a的值,然后a再自减 printf("a = %d , b = %d",a,b);//a = 9 , b = 10 return0; }
后置--,先使用a的值,然后a再自减
前置--
1 2 3 4 5 6 7
#include<stdio.h> intmain() { int a = 10; int b = --a;//前置--,a先--,再使用 printf("a = %d , b = %d",a,b);//a = 9 , b = 9 return0; }
前置--,a先--,再使用
操作符之按位取反~
1 2 3 4 5 6 7 8 9 10 11 12
#include<stdio.h> intmain() { int a = 0; //4个字节,32个比特位 //0的二进制序列:00000000 00000000 00000000 00000000 int b = ~a;//b是有符号的整型,最高位表示的是符号位 //取反后的二进制序列:1(符号位,1代表负数)1111111 11111111 11111111 11111111 //~是按位取反的意思,位是二进制位。 printf("%d\n",b);//使用时,打印的是二进制的原码 //打印的结果是-1 return0; }
原码、反码、补码:负数在内存中存储的时候,存储的是二进制的补码
操作符之(类型)强制类型转换
1 2 3 4 5 6
#include<stdio.h> intmain() { int a = (int)3.14;//原先3.14是double类型,想转换成int型 printf("%d\n",a); return0; }
原先3.14是double类型,想转换成int型,打印的结果是3。 不建议在代码中使用
算数操作符
算数操作符包括+、-、*、/、%(求余数)
1 2 3 4 5 6 7 8
#include<stdio.h> intmain() { int a = 5/2;//结果是2。 int b = 5%2;//结果是1。 printf("%d\n",a); printf("%d\n",b); return0; }
移位操作符
移位操作符(移的是2进制位) >>右移操作符、<<左移操作符
1 2 3 4 5 6 7 8 9 10 11
#include<stdio.h> intmain() { int a = 1; //整型a占4个字节,32位,十进制是1,用2进制表示也就是 00000000 00000000 00000000 00000001 int b = a<<1; //整型b是整型a左移1个字节的结果,也就是00000000 00000000 00000000 00000010,用十进制表示就是2 printf("%d\n",b); printf("%d\n",a);//对a进行左移操作,a本身不变化。 return0; //}
位操作符
位操作符,操作的是2进制位。 &(按位与) ^(按位异或) |(按位或)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#include<stdio.h> intmain() { int a = 3;//a的二进制 0011 int b = 5;//b的二进制 0101 int c = a&b; //a和b按位与就是 0001,按位与也就是并且的意思,只有两个都是1,结果才是1,其余都是0。 int d = a|b; //a和b按位或就是 0111,按位或就是有一个1结果就是1。 int e = a^b; //a和b按位异或就是0110,按位异或就是:有1则1,全1则0。 printf("%d\n",c); printf("%d\n",d); printf("%d\n",e); return0; }
赋值和判断
赋值和判断:一个等号是赋值,两个等号是判断相等。
1 2 3 4 5 6 7 8
#include<stdio.h> intmain() { int a = 10; a = 20;//赋值,两个==是判断相等 a = a + 10;//也是赋值 return0; }
单目操作符、双目操作符、三目操作符
> >= < <= != 用于测试不相等 == 用于测试 相等
1 2 3 4 5 6 7 8
#include<stdio.h> intmain() { int a = 10; int b = 20; int c = a + b;//加号就是操作符,是双目操作符,就是左右有两个操作数 return0; }
逻辑与操作符&&
1 2 3 4 5 6 7 8
#include<stdio.h> intmain() { int a = 3; int b = 5; int c = a && b;//a和b都不是0,所以都是真 printf("%d\n",c);//a和b逻辑与的结果是1,因为逻辑与-全真则真,有假全假 return0; }
a和b逻辑与的结果是1,因为逻辑与-全真则真,有假全假
逻辑或操作符||
1 2 3 4 5 6 7 8
intmain() { int a = 0; int b = 5; int c = a || b;//a是假,b是真 printf("%d\n",c);//逻辑或操作符,有一个是真,结果就是真 return0; }
#include<stdio.h> intmain() { int a = 10; int b = 20; int max; // if (a>b) // max = a; // else // max = b; max = ( a > b ? a : b );//这个表达式和上面的if是一样的 printf("%d\n",max); return0; }