算数操作符:+、-、*(乘号)、/(除号,得到商,不得余数)、%(取模(余)操作符,得到余数,不得商)
想要得到小数,需要用float数据类型的同时,保证被除数与除数任意一个携带有小数位,则可以计算出小数,如:float a =9/2=4.000000 float a =9.0/2(或2.0)=4.500000
若a=2,由于a是一个整型,一个整型是四个字节,一个字节等于八个比特位,所以a用二进制表示为
00000000000000000000000000000010
4.二进制第一位是2的0次方,第二位是2的1次方,第三位是2的2次方......
5.移位操作符:>>(向右移位)、<<(向左移位) //移动的是二进制位
例:
#include<stdio.h>
int main()
{
int a = 2;
int b = a<<1; //将a向左移动一位,意为将二进制表示的a向左移动,左边丢弃一个0 //并在右边末尾补上一个0,变为00000000000000000000000000000100
printf("%d\n",b);
return 0;
}
6.位操作符:&(按位与)、|(按位或)、^(按位异或)
7.赋值操作符:
a = a + 2 //等号赋值符,表示a在原有赋值上,再赋予2
a+=2 //复合赋值,等同于a=a+2
a-=2 //复合赋值,等同于a=a-2
a%=2 //同理
a/=2
a*=2
a&=2
a^=2
a|=2
a>>=2
a<<=2
8.单目操作符
!逻辑反操作
例:
若int a = 2;
printf("%d",!a);
则最终结果呈现为 0 //因为0在编译结果中,表示显示结果为假,即在!操作下,a不等于2了
若int a = 0;
printf("%d",!a);
则最终结果呈现为1 //因为1在编译结果中,表示显示结果为真
-负值
+正值
&取地址
sizeof判断数据类型或变量或数组所占空间
~对一个数的二进制按位取反 //把所有二进制中的数字,1变为0,0变为1
--前置、后置--
同++
++前置、后置++
int a = 1
b=a++ =a+1=2 //后置++仅改变b,不改变a
int c = 2
d=++c =c+1=3 //前置++不仅改变d,而且原有的c也发生变化,变为3
*间接访问操作符
(放置一个类型),强制类型转换
例:
#include<stdio.h>
int main()
{
int a = 3.2
int b = (int)3.2
printf("%d\n%d\n",a,b)
return 0
}
结果会显示,a=3.14,b=3,这里a的数据类型被转化成double,而b被括号中的数据类型强制转化为了整型
8.如同a+b这种,+操作符需操作两个字符或数字时,叫做双目操作符;如同+a这种,需操作一个字符或数字时,叫做单目操作符
9.一个整数的二进制表示有3种:原码、反码、补码,整数在内存中存储的是补码
10.二进制中整数的最高位代表正负,0为正,1为负
11. 负整数的计算,如:-1的
原码为(整数有32位)10000000000000000000000000000001
反码为(除首位外,其余均与原码相反)1111111111111111111111111111110
补码为(反码的二进制加1)11111111111111111111111111111111
12.正整数,原码、反码、补码相同
13.关系操作符:>、>=(大于等于)、<、<=(小于等于)、!=(不相等)、==(相等)
14.逻辑操作符:&&(与)、||(或)
如:
问:这个工作谁能胜任。 答:我&&你(我和你都可以);我||你(我或者你,二者之一)
15.条件操作符:exp1、exp2、exp3......expN...... (相当于if与else)
例:exp1成立,则计算exp2,得到结果为exp2
exp1不成立,则计算exp3,得到结果为exp3
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
int max = 0;
scanf("%d%d\n",&a,&b);
if(a>b)
max = a;
else
max = b;
//红字部分可以被替代为
max = a>b? a ; b ; (意为是否a大于b,a>b成立,计算a>b后,得a;不成立,得b)
16.逗号表达式:逗号隔开的一串表达式,如:a,b,c,d,e
17.逗号表达式是从左到右依次计算,整个表达式的结果是最后一个表达式的结果
18.下标引用、函数调用操作符和结构组成操作符:[](下标引用操作符)、()(函数调用操作符)、. 、->