服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - 详解C语言之操作符

详解C语言之操作符

2022-02-22 14:34鲸落之·海 C/C++

这篇文章主要以图文结合的方式为大家详细介绍了C语言的操作符知识,感兴趣的小伙伴们可以参考一下,希望能给你带来帮助

1.加减乘

c里的加减乘同我们实际生活功能相同,我们不做探究,看例子即可

详解C语言之操作符

 

2.除(/)

c语言里的除法实质上是求商操作(零向取整,即正数取不大于其本身的整数,负数取不小于它本身的整数,都想0靠拢),如-5/2=-2 , 5/2=2,不是四舍五入的取整

另外,同实际生活相同,0不能做除数,编译器不会报错,但计算结果有误,如下图第三次输入,没有结果输出,程序强制结束。

详解C语言之操作符

注意:

在两个整数的除法中,x/y后的结果实质上先经过/的零向取整处理,再进行赋值, 所以,即便用double(浮点型)接收也会产生精度丢失,如下

详解C语言之操作符

这里补充一下表达式的优先执行

表达式一定是优先计算的,如下图: i == 10是一个表达式,执行逻辑运算,首先进行该表达式的运算,结果为真,即1,再执行printf的输出,因此输出为1

详解C语言之操作符

 

3.取余(%)

双目操作符(即有两个操作数 如3%5,3和5就是操作数),只能作用于整型,两边不可以出现double型,结果为余数

详解C语言之操作符

详解C语言之操作符

注意:

当有符号时,余数也会带上负号(余数为0时还是0),与整数略有不同

 

4.移位操作符(>> <<)

因为计算机的一切数据都是以二进制形式存储的,所以这里的移位移动的是二进制的位,

移位分为算术移位和逻辑移位,也有有符号型移位和无符号型移位之分,在这里我们只讲无符号位的移位(即正数的移位)

详解C语言之操作符

注意

A:移位操作不附带赋值操作 在表达式中不会传值

详解C语言之操作符

B:移位操作符也只能作用于整型(浮点型的存储方式不同,各位都有特定的含义,此处不深究)

C:二进制向右移位即*2,,向左移位即/2(正数)

 

5.位操作符(| . & ,^)

位操作符是用来对二进制形式进行操作的

'&' : 按位与 操作符 比较两个数相对应的位数(比较的是补码) 两数均为1结果为1,否则为0

'|' : 按位或 操作符 比较两个数相对应的位数(比较的是补码) 两数有1则为1,均为0则结果为0

'^' : 按位异或 操作符 比较两个数相对应的位数(比较的是补码) 相同为0,相异为1

A:n^n=0;

B: n^1=n; (n和x,y指三个不同的数)

C:n^x=y,n^y=x ― 可用于做基本的解密

详解C语言之操作符

 

6.逻辑操作符(&& . ||)

即生活中的且运算与或运算,是一种逻辑运算

如你想要找两个人去搬桌子,叫甲和乙两个人去抬桌子,那么只有甲来,或只有乙来,桌子都是抬不走的(&&-逻辑与,两个条件都满足才为真,否则为假)。

如果你想要和另一个人搬桌子,叫甲和乙来帮忙,只有有一个人来了,桌子就可以抬走。(||-逻辑或,只要有一个条件满足,结果就为真,都不满足时结果才为假)。

注意:短路运算

A:&&的短路求值:(a条件&&b条件)

&&是逻辑运算,取两边表达式的逻辑值进行运算,那么首先运算的是两边的表达式,其实是先运行左边的表达式,再运行右边的表达式,但既然有一个条件不满足就为假,那么在a条件不满足后就完全没必要进行b条件的判断了,因此b表达式就不会被执行,发生短路。

详解C语言之操作符

B:||的短路求值(a条件||b条件)

||也是逻辑运算,顺序同&&相同,当a表达式为真时,就不必在执行b表达式了,此时b不被执行,被短路。

详解C语言之操作符

 

7.单目操作符

7.1正负号(+ -)

可以与操作数结合作为表达式

详解C语言之操作符

7.2sizeof()

单目操作符,不是函数,计算变量或类型的空间大小,计算变量时可以不加括号,但计算类型必须加括号

详解C语言之操作符

7.3按位取反(~)

即将所有二进制位都取反(0变成1,1变成0)

详解C语言之操作符

7.4逻辑反操作(!)

逻辑运算,对逻辑结果取反(真变成假,假变成真)

详解C语言之操作符

 

8.赋值操作符

‘ = ',注意赋值操作符的左边必须是可变量,不能是常量。

 

9.复合操作符.等式左边不是常量

详解C语言之操作符

补充:

十进制向二进制的快速转换(将原数按照2的n次方分解)

2^n,1后面n个0

如83=64(2^6,1后面6个0)+16(2^4,1后面4个0)+2(2^1,1后面1个0)+1(2^0,1后面没有0) ―― 1010010

 

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注服务器之家的更多内容!

原文链接:https://blog.csdn.net/zlwy1314/article/details/121278688

延伸 · 阅读

精彩推荐
  • C/C++C语言实现双人五子棋游戏

    C语言实现双人五子棋游戏

    这篇文章主要为大家详细介绍了C语言实现双人五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    两片空白7312021-11-12
  • C/C++关于C语言中E-R图的详解

    关于C语言中E-R图的详解

    今天小编就为大家分享一篇关于关于C语言中E-R图的详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看...

    Struggler095962021-07-12
  • C/C++使用C++制作简单的web服务器(续)

    使用C++制作简单的web服务器(续)

    本文承接上文《使用C++制作简单的web服务器》,把web服务器做的功能稍微强大些,主要增加的功能是从文件中读取网页并返回给客户端,而不是把网页代码...

    C++教程网5492021-02-22
  • C/C++OpenCV实现拼接图像的简单方法

    OpenCV实现拼接图像的简单方法

    这篇文章主要为大家详细介绍了OpenCV实现拼接图像的简单方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    iteye_183805102021-07-29
  • C/C++c/c++实现获取域名的IP地址

    c/c++实现获取域名的IP地址

    本文给大家汇总介绍了使用c/c++实现获取域名的IP地址的几种方法以及这些方法的核心函数gethostbyname的详细用法,非常的实用,有需要的小伙伴可以参考下...

    C++教程网10262021-03-16
  • C/C++c/c++内存分配大小实例讲解

    c/c++内存分配大小实例讲解

    在本篇文章里小编给大家整理了一篇关于c/c++内存分配大小实例讲解内容,有需要的朋友们可以跟着学习参考下。...

    jihite5172022-02-22
  • C/C++C语言main函数的三种形式实例详解

    C语言main函数的三种形式实例详解

    这篇文章主要介绍了 C语言main函数的三种形式实例详解的相关资料,需要的朋友可以参考下...

    ieearth6912021-05-16
  • C/C++深入C++拷贝构造函数的总结详解

    深入C++拷贝构造函数的总结详解

    本篇文章是对C++中拷贝构造函数进行了总结与介绍。需要的朋友参考下...

    C++教程网5182020-11-30