C语言之运算符的详解

目录

1.3运算符

1.3.1运算符

1.3.2运算符的分类

1.3.3算数运算符

1.3.4 关系运算符

1.3.5 位运算符

1.3.6 条件运算符号

1.3.7 逗号运算符

1.3运算符

1.3.1运算符

用算术运算符将运算对象(也称操作数)连接起来的、符合C语法规则的式子,称为C算术表达式 运算对象包括常量、变量、函数等.

1.3.2运算符的分类

1、双目运算符:即参加运算的操作数有两个

例: a+b

2、单目运算符:参加运算的操作数只有一个

++自增运算符 给变量值+1

--自减运算符 给变量值-1

int a=10;
a++; 

3、三目运算符:即参加运算的操作数有 3 个

()?():()

1.3.3算数运算符

/ % += -= *= /= %=

10%3 表达式的结果为 1

复合运算符:

a += 3 相当于 a=a+3

a=6+8 相当于 a=a(6+8)

1.3.4 关系运算符

(>、<、= =、>=、<=、!= )

!=为不等于 一般用于判断条件是否满足或者循环语句

1.3.5 逻辑运算符

1、&&

逻辑与 两个条件都为真,则结果为真

if((a>b) && (a<b)

if(b<a<c) 这种表达方式是错误的

2、|| 逻辑或

两个条件至少有一个为真,则结果为真

if((a>b) || (a<c)

3、! 逻辑非

if(!(a>b)) {

}

1.3.5 位运算符

十进制转二进制:

方法 除 2 求余法

例: 123 十进制 转二进制

正数在内存中以原码形式存放,负数在内存中以补码形式存放 .

正数的原码=反码=补码

原码:将一个整数,转换成二进制,就是其原码。

如单字节的 5 的原码为:0000 0101;-5 的原码为 1000 0101。

反码:正数的反码就是其原码;负数的反码是将原码中,除符号位以外,每一位取反。

如单字节的 5 的反码为:0000 0101;-5 的反码为 1111 1010。

补码:正数的补码就是其原码;负数的反码+1 就是补码。

如单字节的 5 的补码为:0000 0101;-5 的补码为 1111 1011。

在计算机中,正数是直接用原码表示的,如单字节 5,在计算机中就表示为:0000 0101。 负数用补码表示,如单字节-5,在计算机中表示为 1111 1011。

无论是正数还是负数,编译系统都是按照内存中存储的内容进行位运算

1、&按位 与

任何值与 0 得 0,与 1 保持不变

使某位清 0

0101 1011&

1011 0100=

0001 000

2、| 按位 或

任何值或 1 得 1,或 0 保持不变

0101 0011 |

1011 0100 =

1111 0111

3、~ 按位取反

1 变 0,0 变 1

0101 1101~1010 0010

4、^ 按位异或

相异得 1,相同得 0

1001 1100 ^

0101 1010 =

1100 0110

5、位移

>>右移

<< 左移

注意右移分:逻辑右移、算数右移

(1)、右移

逻辑右移 高位补 0,低位溢出

算数右移 高位补符号位,低位溢出 (有符号数)

A)、逻辑右移

低位溢出、高位补 0 0101 1010 >>3

0000 1011

B)、算数右移:

对有符号数来说 低位溢出、高位补符号位。

1010 1101 >> 3

1111 010 1

总结 右移:

1、逻辑右移 高位补 0,低位溢出 注:无论是有符号数还是无符号数都是高位补 0,低位溢出 .

2、算数右移 高位补符号位,低位溢出 (有符号数) 注:对无符号数来说,高位补 0,低位溢出 对有符号数来说,高位补符号位,低位溢出.

(2) 左移<< 高位溢出,低位补 0

5<<1

0000 0101

0000 1010

1.3.6 条件运算符号

()?():()

A?B:C;

如果?前边的表达式成立,整个表达式的值,是?和:之间的表达式的结果 否则是:之后的表达式的结果

例 14: #include<stdio.h>  
int main(int argc, char *argv[]) { 
int a; 
a=(3<5)?(8):(9); 
printf("a=%d\n",a); 
return 0; } 

1.3.7 逗号运算符

(),()

例 15: #include<stdio.h>  
int main(int argc, char *argv[]) { 
int num; 
num=(5,6); 
printf("%d\n",num); 
return 0; }          注意逗号运算符的结果是,后边表达式的结果

1.3.8 自增自减运算符

i++    i--

运算符在变量的后面,在当前表达式中先用 i 的值,下条语句的时候 i 的值改变

例 16: #include<stdio.h>  
int main() {
int i=3; 
int num;
num=i++; 
printf("num=%d,i=%d\n",num,i);   //num=3 ,i=4 
return 0; }

++i 先加 ,后用

例 17: #include<stdio.h>  
int main() { 
int i=3; 
int num; 
num=++i; 
printf("num=%d,i=%d\n",num,i);       //num=4,i=4 
return 0; }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向着五星的方向

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值