C语言运算符号

news/2025/1/2 3:17:04/

C语言运算符号

分类:
1、算术运算符
2、关系运算符
3、逻辑运算符
4、位运算符
5、赋值运算符
6、杂项运算符

一、算术运算符

用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(–)共七种。

二、关系运算符

用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)六种。

三、逻辑运算符

用于逻辑运算。包括与(&&)、或(||)、非(!)三种。
与(&&): 如果两个操作数都非零,则条件为真。

或(||): 如果两个操作数中有任意一个非零,则条件为真。

非(!): 如果条件为真则逻辑非运算符将使其为假。

四、位操作运算符

参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。

1、与(&): 0&0=0; 0&1=0; 1&0=0; 1&1=1;只有都为1结果才为1

2、或(|): 0|0=0; 0|1=1; 1|0=1; 1|1=1;只有都为0.则为0

3、非(~): 取反运算符~1=-2; ~0=-1; 60进行下面的计算将得到 -61,即为 1100 0011,一个有符号二进制数的补码形式

4、异或(^): 只有当两边不同时才为1。

5、左移(<<): 二进制左移运算符。将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。
60<< 2 将得到 240,即为 1111 0000
注意在此时是转换成二进制才进行运算。

6、右移(>>): 二进制右移运算符。将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃
60>> 2 将得到 15,即为 0000 1111~
左右移方便的计算方法
在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。
右移一位相当于除2,右移n位相当于除以2的n次方。
12>>1 结果:6    12/2^1
12>>2 结果:3    12/2^2
左移一位相当于乘2,左移n位相当于乘以2的n次方。
12<<1 结果 :24 ` 12x2^1
12<<2 结果 :48    12x2^2

五、赋值运算符

用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。
+=: 加且赋值运算符 C += A 相当于 C = C + A

-=: 减且赋值运算符 C -= A 相当于 C = C - A

*=: 乘且赋值运算符 C *= A 相当于 C = C * A

/=: 除且赋值运算符 C /= A 相当于 C = C / A

%=: 求模且赋值运算符 C %= A 相当于 C = C % A

<<=: 左移且赋值运算符 C <<= 2 等同于 C = C << 2

&=: 按位与且赋值运算符 C &= 2 等同于 C = C & 2

^=: 按位异或且赋值运算符 C ^= 2 等同于 C = C ^ 2

|=: 按位或且赋值运算符 C |= 2 等同于 C = C | 2

六、条件运算符

这是一个三目运算符,用于条件求值( ? :)。
//三目运算符
<表达式1> ? <表达式2> : <表达式3>;
返回值:先求表达式 1 的值,如果为真,则执行表达式 2,并返回表达式 2 的结果;如果表达式 1 的值为假,则执行表达式 3,并返回表达式 3 的结果。
如果条件是真的,则执行 ? 和 : 之间的语句;否则,执行 : 之后的部分。

(x < 0) ? (y = 10) : (Z = 20);

七、其他的运算

指针运算符 :用于取内容(*)和取地址(&)二种运算。
指向:常用于结构体指针变量访问成员。(->)
运算符“->”,通过结构体指针变量直接获得结构体变量的成员变量,一般形式如下:
结构体指针变量-> 成员变量
使用操作符"->"来访问结构体成员,箭头操作符对左操作数执行间接访问来获取指针所指向的结构,然后根据右操作数来访问一个成员,p->a。
结构体的成员的取用区别:
定义的结构体如果是指针,访问成员时就用->
如果定义的是结构体变量,访问成员时就用.
->指针运算符。
1、如果结构体中的成员均为一般变量(包括结构体变量),则使用“.”,如果成员变量为指针(不管指向什么,包括结构体),则使用“->”。
2、如果定义了结构体数组指针,则可分别使用“.”和“->”,区别在于指针带下标时,以是数组形式访问,此时用“.”,如果不带下标(或使用偏移),此时用“->”。

运算符的优先级

初、单、算、关、逻、条、赋
初等运算符>单目运算符>算术运算符>关系运算符>逻辑运算符>条件运算符>赋值运算符
初等运算符:()、[ ]、->、. (后两者均为结构体成员运算符);
单目运算符:!、~、++、–、sizeof、&、
算术运算符
、/、+、-、<<、>>;
关系运算符:<、<=、>、>=、==、!=、&、^、|;(此栏排列仍有优先级顺序哦);
逻辑运算符:&&、||;
条件运算符:?:(即三目运算符);
赋值运算符:=、+=、-=、*=、/=、%=、>>=、<<=;等


http://www.ppmy.cn/news/698203.html

相关文章

c语言里除法符号,c语言整除符号(c语言switch用法举例)

求余符号不就变成整除符号了吗? 看书中写 7%4的值为3 那么如何理解x%4=。 C语言中整除是 / 符号,%符号是取余运算符。整除运算符( / )需要注意的就是运算结果会自动转换为与被除数一致的数据类型。举例说明如下:int a=5, b=2; float c; c = . 如果操作数是整数,那么就是整除…

OI中常见的数学符号

整除/同余理论常见符号 1、整除符号 。表示 x 整除 y&#xff0c;即 x 是 y 的因数。 2、取模符号 。表示 x 除以 y 得到的余数。 3、互质符号 。表示 x 和 y 互质。公约数只有 1 的两个数,叫做互质数。 4、最大公约数 gcd(x, y)。在无混淆意义的时候&#xff0c;可以…

高精除以高精

高精除以高精&#xff0c;求它们的商和余数。 【算法分析】 高精除以低精是对被除数的每一位&#xff08;这里的“一位”包含前面的余数&#xff0c;以下都是如此&#xff09;都除以除数。 高精除以高精则是用减法模拟除法&#xff0c;对被除数的每一位都减去除数&#xff0c;一…

Java怎么除以2_哪个更好的选项用于将整数除以2?

回答(23) 2 years ago 使用最能描述您要执行的操作的操作 . 如果要将数字视为位序列,请使用bitshift . 如果您将其视为数值,请使用除法 . 请注意,它们并不完全等效 . 它们可以为负整数提供不同的结果 . 例如: -5 / 2 = -2 -5 >> 1 = -3 2 years ago 第一个看起来像分…

java 无符号右移_java中的无符号移位运算

1. 无符号右移 >>> 或 >>> = 无符号右移(>>>)跟右移(>>)运算符不一样。 右移不改变数的正负。 对于一个正数,无符号右移不会变成负数(相当于除以1再取整);但是对于一个负数,无符号右移会将负数变成正数; int i = -4; System.out.print…

Java各种运算符号的含义及区别汇总

一、<< &#xff1a;左移运算符&#xff0c;num << 1,相当于num乘以2 例如&#xff1a; 2 << 1 //4 移了一位2*2 2 << 2 //8 移了两位 2*2*2 2 << 3 //16 移了三位 2*2*2*2 二、>> &#xff1a;右移运算符&#xff0c;num >> 1,相当…

除以用计算机按哪个键,电脑上除以是哪个键

大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。 电脑上除以是在右侧数字键盘8键上面的那个键。 电脑(computer&#xff0c;又称计算机)是一种用于高速计算的电子计算机器&#xff0c;被称为“20世纪最先进的科学技术发明之一”。电…

c语言中无符号和有符号之间的运算

关于计算机中有符号&#xff0c;无符号数值的表示以及它们之间的运算 是基本知识&#xff0c;但工作这么多年也不敢说完全搞明白透彻。 这几天在将知识点进行了一些梳理&#xff0c;并做了一些有意思的试验。 计算机中&#xff0c;数值的表示和运算都是用补码表示的。 正数的补…