C语言运算符详解-创新互联

首先,引入表达式的概念:由操作数和运算符组合成的式子
分为左值和右值
(1)左值:就是可以的内存块,也就是变量
(2)右值:可以的内存块,也就是变量,常量,字面值

创新互联主营扎兰屯网站建设的网络公司,主营网站建设方案,APP应用开发,扎兰屯h5小程序开发搭建,扎兰屯网站营销推广欢迎扎兰屯等地区企业咨询一.算术运算符

(1)+
(2)-
(3)*
(4)/
如:10/3=3
5.0/2=2.5
说明:
如果两个操作数都为整数,执行整数除法(舍弃小数部分),只要有浮点数,就执行浮点数除法,而且会向下取整(也就是小数点之后的舍弃)
注意:/的右操作数不能为0

例:

int a=1;
int b=0;
printf("%d\n",a/b);

结果会报错:

Exception in thread "main" java.lang.ArithmeticException: / by zero
//算术异常

(5)%–>取余
如:10%3=1
注意:%要求两个操作数都为整数,并且右操作数不能为0,并且运算结果的符号由左操作数决定
例:

printf("%d\n",10%3);//1
printf("%d\n",-10%3);//-1
printf("%d\n",-10%-3);//1
printf("%d\n",-10%-3);//-1

(6)++ -->自增运算符
(7)-- -->自减运算符
注意:自增和自减运算符只能用于变量,不可以用于常量或表达式

分为前置和后置:
(1)前置:先++或–,再使用
(2)后置:先使用,再++或–
例:

int i=0;
printf("%d\n",++i);//1
printf("%d\n",i);//1
i=0;
printf("%d\n",i++);//0
printf("%d\n",i);//1
二.赋值运算符

=:结合性从右到左
例:

int a,b;
a=b=10;
printf("%d\n",a);//10
printf("%d\n",b);//10

复合赋值运算符
+=
-=
*=
/=
%=
<<=
>>=
&=
/=
^=
例:

a+=3;//相当于a=a+3;
三.关系运算符
>>=
<
<=

!=   用于测试“不相等”

==   用于测试“相等”

=        用于赋值

注意:要注意   == 和   =   的区别
四.逻辑运算符

&&(逻辑与,二元运算符)

真 && 真 ->真 真 && 假 ->假
假 && 真 ->假 假 && 假 ->假

||(逻辑或,二元运算符)

真 || 真 ->真 真 || 假 ->真
假 || 真 ->真 假 || 假 ->假

!(逻辑非,一元运算符)

注意:

逻辑与的短路问题:当左操作数为假时,即可判断表达式结果为假,右操作数不执行。

逻辑或的短路问题:当左操作数为真时,即可判断表达式结果为真,右操作数不执行。

例:

int a = 1, b = 1;
printf("%d\n", ++a || ++b);
printf(“a=%d b=%d\n”, a, b); // a=2 b=1
int a = -1, b = -1;
printf("%d\n", ++a && ++b);
printf(“a=%d b=%d\n”, a, b); // a=0 b=-1

例:

x=y=1;
t=++x||++y;
//结果是t=1,x=2,y=1
五.位运算符(均在二进制位上操作)

首先,我们要知道,数据存储的最小的单位是字节,而对数据进行操作的最小的单位是比特,每个字节由8个比特位构成。
我们自己设定:A= 00000101,B= 00001011
&(按位与):同1为1,其它为0
则A&B=00000001

例:在这里插入图片描述

|(按位或):有1即为1
则A|B=00001111

例:
在这里插入图片描述

~(按位取反):0变1,1变0
则~A=11111010

^(按位异或):相同为0,不同为1
则A^B=00001110
例:

0^0=0;
1^0=1;
1^1=0;

注意:一个数a位异或另外一个数b两次,结果还是这个数a本身。(也就是说如果两个数相同,异或的结果是0)这个特点可以用来交换两个元素的值

<<(按位左移):左操作数向左移动右操作数指定的位数,低位补0(也就是最左侧不要了,右侧补0)
则A<<2=00010100

注意:左移运算符左移一位相当于乘以2,而且左移丢弃的是符号位,所以正数左移可能会变为负数

>>(按位右移):左操作数向右移动右操作数指定的位数,高位补符号位(正数补0,负数补1)
 >则A>>2=00000001
注意:右移运算符右移一位相当于除以2

 >>>:无符号右移:最右侧不要了,最左侧补0
六.条件运算符

语法是 :exp1?exp2:exp3;

这个表达式的意思是如果exp1为真,整个表达式的结果就是exp2,如果exp1为假,整个表达式的结果就是exp3

例:

//求较大值
int a=10;
int b=20;
printf("%d\n",(a>b?a:b));

注意:表达式2和表达式3的结果必须是同类型的,除非可以发生隐式类型转换

例:

int a=10;
int b=20;
int c=a>b?1:2.0;

表达式不能单独存在,结果必须要被使用

例:

int a = 10;
int b = 20;
a >b? a : b;     // 会报错: 不是语句
七.逗号运算符

exp1,exp2,exp3,…expN;

逗号表达式会从左到右依次执行,整个表达式的结果为最后一个表达式的结果

八.sizeof

注意:sizeof是一个运算符,而不是函数

九.运算符的优先级

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:同一级的运算符,优先次序由结合方向决定,

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


新闻名称:C语言运算符详解-创新互联
网页地址:http://pwwzsj.com/article/hophj.html