1.减号也可以做负号,做取负运算的时候,放在一个变量的前面表示这个变量的相反数
2.取模(求余)运算的时候,左右两边的操作书,必须是整形数据(包括字符,字符是以ASCII码来参与运算的)。
3.自加和自减运算,除了整数之外,浮点型,字符型,指针性都可以进行自增和自减。
4.+ - * / %都是双目运算符,++ --是单目运算符,+ -在做取正和取负的时候,可以当作单目运算符。
a++:后缀自增,先将自增之前的值参与运算,本身也要参与运算
++a:前缀自增,本身先做自增运算,再将自增之后的值参与运算
a–:后缀自减,先将自减之前的值参与运算,本身也要参与运算
--a:前缀自减,本身先做自减运算,再将自减之后的值参与运算
int a=10;
int b=a++; ///a = 11 b = 10
int a=10;
int b=++a; ///a = 11 b = 11
int a=10;
int b=a--; ///a = 9 b = 10
int a=10;
int b=--a; ///a = 9 b = 9
eg:
c = 10,b=20;
c = ++a + ++b;///a = 11,b = 21,c = 32
c = a++ + ++b;///a = 11,b = 21,c = 31
c = ++a + b++;///c=31
c = a++ + b++;///c=30
> >= < <= == !=
1、关系运算符用于判断运算符两边的表达式是否满足给定的大小条件
2、由关系运算符组成的表达式称为关系表达式,其值为bool类型,要么成立,要么不成立
3、判断是否相等用的是双等号,而不是一个等号,一个等号表示赋值
一般在判断两个值是否相等时,将常量写在等号的前面
if (-1 == fd)
{
printf("文件打开失败\n");
}
&& || !
逻辑反:将逻辑真假取反,真变假,假变真
逻辑与:将两个表达式串联起来,且左右两边的表达式都为真时,结果为真
逻辑或:将两个表达式串联起来,且左右两边的表达式都为假时,结果为假
逻辑与:如果左边的表达式的结果为假,那么右边的表达式就不在计算.
逻辑或:如果左边的表达式的结果为真,那么右边的表达式就不在计算.
& | ~ ^ << >>
位运算就是对这个操作数的每一位进行位运算,不管是八进制,十进制,还是十六进制,在进行位运算时,都要转换成二进制进行运算。
简单赋值运算符:=
不能对常量赋值,只能对变量赋值。
不能对数组赋值,但是可以对数组的单个元素进行赋值
可以连续赋值,从右往左依次赋值
复合赋值运算符:+= -= *= /= %= &= |= ^= <<= >>=
当左右两边有相同的操作数时,采用复合赋值运算,不仅直观,更利于代码的可读性,提高运行效率
a ~= b;///非法
a = ~b;//ok
& 取地址 &x 取变量x的地址
* 解引用 *x 得到x地址里面的数据
[] 下标 x[2] 拿到数据下标为2的这个元素的值
. 取成员 x.y 拿到结构体变量x里面成员名为y的值
-> 取成员 x->y 拿到结构体指针x里面成员名为y的值
? :
唯一一个需要用到三个操作数据运算符
语法:表达式1?表达式2:表达式3
int n = 100;
int m = 200;
int c;
c = (n>m)?n:m;
printf("c = %d\n", c);
作用:计算制定数据类型或者变量所占空间字节大小
语法:sizeof(数据类型),sizeof(变量名),sizeof 变量名,在计算变量名的时候可以省略括号,计算数据类型的时候,不可以,原因 struct node
int a;
printf("sizeof a = %ld\n", sizeof a); //空格可以省略
printf("sizeof(a) = %ld\n", sizeof(a));
printf("sizeof(long) = %ld\n", sizeof(long));
作用:退出某个函数(return在main函数里面,整个程序就退出了)
只能放在函数体内,不能放在函数体外,在函数体内,可以返回对应的数据
调用函数的时候,在函数名后面的括号
函数名(参数列表)
运算的时候,(++a), (a > b) , (a && b)
从左往右依次计算,取最后一个表达式的结果,作为逗号表达式的值
int a = 20;
int b = 40;
int c = (a++, b++, a+b, a = b-a, a-b);
当一个表达式里面出现多个不同的运算符的时候,要考虑那个运算符先做,那个运算符后做,先乘除,在加减
当这个表达式里面出现的运算符优先级相同的时候,那么就要根据这个运算符的结合性来运算