【C语言】--- C语言操作符汇总

闲聊几句:

  写这篇C语言操作符主要为练手,总结一下这两天了解的有关操作符的知识,以免以后老年痴呆了忘了相关的内容还可以有个地方回来瞄一眼。
    如果有什么有错的地方被路过的大牛们看出来了还请加以指正。。。

操作符

个人理解为,操作符就是可以进行某些操作的符号(其实我感觉我说的是废话。。。)

操作符分类

-算数操作符
-移位操作符
-赋值操作符
-单目操作符
-关系操作符
-逻辑操作符
-条件操作符
-逗号表达式
-下标引用、函数调用和结构成员

算数操作符

操作符 功能
+
-
*
/
% 取模

加减乘都没什么好说的了,和小学学的东西一样的。

‘/’运算的时候注意分子分母有一个为浮点型,进行的就是浮点型除法。

‘%’返回的结果是整除后的余数,但是这里首先要注意两个操作数都必须是整数(这里其实有一个问题,负整数取模也属于整数运算,但是查资料以后了解到似乎在不同语言里面的处理方式不一样,目前存疑,仍需研究)。

移位操作符

操作符 功能
<< 左移操作符
>> 右移操作符

移位操作符运算的时候都是对补码进行移位,变量操作后,自身不会改变。

int main()
{
    int a = 1;
    int b = a << 1;
    printf("%d\n", a);
    printf("%d\n", b);
    return 0;
}
结果: a=1,b=2

‘<<’时,补码左移,右补0,左丢弃
‘>>’时,补码右移,左补原来的最高位,右丢弃

‘>>’的结果可以分两种情况:
①逻辑移位:此情况下不用考虑符号位,之间在最高位补0;
②算数移位:这是目前编译器运行得到结果采用的方式,补原来的最高位,保证不会改变符号位。

位操作符

操作符 功能
& 按位与
按位或
^ 按位异或

同样是只能对补码进行运算,而且必须是整数(编译会报错。。。)
‘&’:同一才为一
’ | ‘:有一就为一
‘^’:相同为零,相异为一

赋值操作符

操作符 功能
赋值

这个。。。没什么好说的了,写程序的时候注意别把判断相等写成赋值就行(手动哭),大一我就这样错过。。。
而且赋值可以连续使用:
如:a=x=y;
我就想说累不累。。。

复合赋值符

操作符 功能
+=
-=
*=
/=
%=
>>=
<<=
&=
丨=
^=

这个老简单了!
a += b 意思就是 a = a + b,以此类推

单目操作符

操作符 功能
逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(字节)
~ 对一个数的二进制按位取反
前置、后置自减
++ 前置、后置自加
* 间接访问操作符(解引用操作符)
(类型) 强制类型转换

‘!’: 多用于判断真假
‘-‘: 负数,-1 -2 -3······
‘+’:正数,经常省略
‘sizeof’:既是操作符,又是关键字,但!不!是!函!数!!!用来求变量或类型大小,单位为字节
如:sizeof(数组名)或sizeof 变量
其他的功能就是他们的解释了,多用用就全会了,手动坏笑~

关系操作符

操作符 功能
>
<
>=
<=
!= 不等于
== 等于

相信上过小学一年级(也许是学前班)都知道这些是什么意思,老话重谈,注意相等和赋值

逻辑运算符

操作符 功能
&& 逻辑与
丨丨 逻辑或

要区分逻辑按位的区别,逻辑运算符判断真假,值为0与非0。

条件运算符

exp1 ? exp2 : exp3
判断exp1是否成立,成立为exp2,否则为exp3
以后比大小一句解决!

逗号表达式

exp1,exp2,exp3,…,expN
从左向右依次执行。整个表达式结果为最后一个表达式结果。
int a=1;
int b=2;
int c=(a>b,a=b+10,a,b=b+1);
结果:c=3

下标引用、函数调用和结构成员

1.[]
操作数:一个数组名+一个索引值
如:arr[10]或10[arr]
‘[]’的两个操作数为arr和10

2.()
函数调用操作符:接受一个或多个操作数,第一个为函数名,剩余为传递给函数的参数
如:fun(int a,float b,…)
操作数:fun 、a 、b…

3.访问一个结构的成员
’ . ‘: 结构体 . 成员名
‘->’:->结构体指针->成员名

防老年痴呆第一篇over~
第一次用markdown写博客(听说大神们都是用这个的,努力!奋斗!),没有表情包很难受。。。手动哭泣~~~

猜你喜欢

转载自blog.csdn.net/Mr_HHHHH/article/details/78598657