赋值操作符分为简单赋值操作符和复合赋值操作符。简单赋值操作符:=;复合赋值操作符:+=,-=,*=,/=,%=,<<=,>>=,&=,|=,^=分别称为加等,减等,乘等,除等,取模等,左移等,右移等,按位与等,按位或等,按位异或等。(在变量创建的时候给一个初始值叫初始化,在变量创建好后,再给一个值,这叫赋值)
=:将赋值操作符右边的值赋给左边的变量。需要注意的是,如果进行连续赋值,是从右往左依次赋值。
+=:a += b 等价于 a = a + b。
-=:a -= b 等价于 a = a - b。
*=:a *= b 等价于 a = a * b。
/=:a /= b 等价于 a = a / b。
%=:a %= b 等价于 a = a % b。
<<=:a <<= b 等价于 a = a << b,用于左移操作。
>>=:a >>= b 等价于 a = a >> b,用于右移操作。
&=:a &= b 等价于 a = a & b,用于按位与操作。
|=:a |= b 等价于 a = a | b,用于按位或操作。
^=:a ^= b 等价于 a = a ^ b,用于按位异或操作。
!、++、--、&、*、+、-、~、sizeof、(类型)分别称为逻辑非操作符、自增操作符、自减操作符、取地址操作符、间接访问操作符、正号操作符、负号操作符、按位取反操作符、sizeof操作符、强制类型转换操作符。因为这些操作符只有一个操作数所以称为单目操作符。
!,对操作数进行逻辑取反。如果操作数的值为非零,则逻辑非操作后的结果为 0(假);如果操作数的值为 0(假),则逻辑非操作后的结果为 1(真)。常用与分支语句中的判断。
++,使操作数的值增加 1(a++,与a=a+1等效),--,使操作数的值减少 1(a--,与a=a-1等效)。需要注意的是它们可以分为前置和后置两种形式。前置形式(++a,--a):先对变量的值进行修改,然后再将修改后的值用于表达式中(先++或--后使用)。后置形式(a++、a--):先使用变量原来的值参与表达式的运算,然后再对变量的值进行修改(先使用后++或--)。
&,用于获取变量在内存中的地址。主要运用在scanf()函数和指针中。
*,间接访问操作符当它作用于指针时,用于访问指针所指向的内存单元的值。
+,用于表示一个数是正数,对与一个数的正负值没有影响,是一个完全可以省略的操作符,但是写了C语言也不会报错。-,用于将一个数取相反数,负数前面加上-就会得到正数,正数的前面加上-就会得到负数。
~,对操作数的二进制位进行取反操作,即 0 变为 1,1 变为 0
sizeof,用于获取数据类型或变量在内存中所占的字节数,sizeof的操作符的操作数可以是类型也可以是变量或者表达式(如果是表达式,可以省略后边的括号),sizeof操作符的返回值类型是size_t,在 C 语言中它是一种无符号整数类型,返回值用%zd来打印。注意:sizeof后面的表达式是不真实参与运算的,根据表达式的类型来得出大小。
(类型),强制类型转换是一种将一个数据类型的值转换为另一个数据类型值的操作。强制类型转换的基本语法是:(目标类型)表达式。这里的 “表达式” 可以是变量、常量或者更复杂的表达式,“目标类型” 是你想要转换得到的类型。
>,<,>=,<=,==,!=分别称为大于,小于,大于等于,小于等于,等于,不等于。这些操作符都是双目操作符。
>,<大于与小于操作符与数学里的大于,小于意义相同。
>=,<=在数学语言中分别叫做大于等于,小于等于,但是在C语言中大于等于必须写成一个大于号再加上一个等号,小于等于同理。
==,!=在数学语言中分别叫做等于,不等于,需要注意的是在C语言中等于是两个等号,(一个等号是赋值操作符),不等于是一个英文叹号加一个等于号。
运用这些操作符需要注意的是,不要使用连续判断,即不要写出b &&,||,!分别称为逻辑与运算符,逻辑或操作符,逻辑取反操作符。 &&,“全真则真,有假则假”。当使用&&连接两个表达式时,只有两个表达式的值都为真时,整个逻辑与表达式的值才为真;若其中一个表达式为假,整个表达式就为假。 ||,“有真则真,全假则假”。当使用||连接两个表达式时,只要两个表达式中有一个的值为真,整个逻辑或表达式的值就为真;只有当两个表达式的值都为假时,整个逻辑或表达式的值才为假。 !,对一个表达式的值进行取反操作。如果原表达式的值为真,则!操作后的结果为假;如果原表达式的值为假,则!操作后的结果为真。 在逻辑操作符中存在一个特殊的情况称为短路,即,如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值。在计算表达式1&&表达式2时,如果表达式1的值为假,那么表达式2将不会被计算。这是因为无论表达式2的值是什么,整个逻辑与表达式都已经确定为假。在计算表达式1 || 表达式2时,如果表达式1的值为真,那么表达式2将不会被计算,因为无论表达式2的值是什么,整个逻辑或表达式都已经确定为真。 条件操作符也称为三元运算符,是 C 语言中唯一需要三个操作数的运算符,其语法形式为:表达式1?表达式2:表达式3。比如:a>b?a:b(符号都是英文字符)如果表达式1的值为真,则整个条件表达式的值为表达式2的值。如果表达式3的值为假,则整个条件表达式的值为表达式3的值。可以用来代替if-else的判断,可以使代码更简洁。 exp1,exp2,exp3……expN(用逗号隔开的多个表达式),这就是逗号表达式。需要注意的是逗号表达式是从左往右依次执行的。整个表达式的结果是最后一个表达式的结果,但是前面表达式的计算可能会影响后面的计算。 [ ]称为下标引用操作符,他的操作数有两个分别是:一个数组名+一个索引值(即下表)。所以下标引用操作符是一个双目操作符。请注意int arr[10];中的[ ]不是下标引用操作符,这个只是一种写法,而printf("%d",arr[0]);这里的[ ]才是下标引用操作符,用来得到数组中一个元素的值。 (),称为函数调用操作符,接受一个或多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。所以这个操作符的操作数至少有一个,对于没有传参的函数,操作数就只有一个。 .,->分别称为点操作符和箭头操作符。在 C 语言中,结构成员访问操作符用于访问结构体中的成员。 .,当你有一个结构体变量时,使用点操作符来访问它的成员。点操作符的左侧是结构体变量名,右侧是要访问的成员名。点操作符接受2个操作数,用于结构体成员的直接访问。 ->,当你有一个指向结构体的指针时,使用箭头操作符来访问结构体成员。箭头操作符的左侧是指向结构体的指针,右侧是要访问的成员名。它等价于(*指针变量).成员名。箭头操作符用于结构体成员的间接访问。 七、逻辑操作符
八、条件操作符
九、逗号表达式
十、下标引用操作符
十一、函数调用操作符
十二、结构成员访问操作符