iOS c语言 基本运算符

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

iOS_06_基本运算符

一、算术运算

  c语言一共有34种运算符,包括了常见的加减乘除

  1.加法运算+

    # 除了能做加法运算,还能表示正号:+5、+90

  2.减法运算-

    # 除了能做减法运算,还能表示符号:-10、-200

  3.乘法运算*

    # 注意符号,不是x,而是*

  4.除法运算/

    # 注意符号,不是÷,也不是\,而是/

    # 整数除于整数,还是整数。1/2的值是0,并不是二分之一

  5.取余运算%

    # 什么是取余:两个整数相除之后的余数

    # %两侧只能是整数

    # 正负性取决于%左侧值

  6.注意点

    * 自动类型转换

      int a = 10.6

      int b = 10.5 + 1.7

      自动将大型转换为了小数类型,会丢失精度

    * 自动类型提升

      int b = 10.5 +10;

      将右边的10 提升为了double类型

      double b = 1.0/2;

      解决除法的精度问题

    * 强制类型转换

      double a = (double)1/2

      double b = (double)1/2

    * 运算顺序

      # 表达式

      # 结合性(结合方向):2+3+4

      # 优先级:5+4*8-3

二、赋值运算

  1. 简单赋值

    * int a = 10 +5;的运算过程

    * a= b = 10;的运算过程

    * 等号左边部能是常量,比如10 =11;

  2.复合赋值

    * 复合减乘除余: a+=4 =5;

三、自增自减

  1.简单使用

    * ++自增运算符。如a++ ,++a 都是等价于a = a+1

    * 自减运算符。如a--,--a,都等价于 a= a-1

    * 5++ 是错误的

  2. ++a和a++的区别

    int a = 10;

    a++; ++a;

    int b = a++; int b= ++a;

四 、sizeof

  1.作用

    用来计算一个变量或者一个常量、一种数据类型所占的内存字节数。

  2.基本形式

    * sizeof(变量\常量)

 

    * sizeof 变量\常量

    * sizeof(数据类型)   

五、 关系运算(比较运算)

  1.条件判断

    * 默认情况下,我们在程序中写的每一句正确代码都会被执行。但很多时候,我们想在某个条件成立的情况下才执行某一段代码

    * 这种情况的话可以使用条件语句来完成,但是我们暂时不学习条件语句,先来看看一下更基础的知识:如何来判断一个条件成不成立。

  2.真假

    * 在C语言中,条件成立称为”真“,条件不成立称为”假“,因此,判断条件是否成立,就是判断条件的”真假“。

    * 怎么判断真假呢? c语言规定,任何数值都真假性,任何非0值都为”真“,只有0才为”假“。也就是说,108,-18,4.5、-10.5等都是”真“,0则是”假“。

  3.关系比较

    * 开发中经常要比较,比如斗地主游戏中牌的大小。利用关系运算符就可以比较两个值的大小。

    * 关系运算符的运算结果只有2种:如果条件成立,结果就是1,也就是”真“;如果条件不成立,结果就为0,也就是”假“

  4.使用注意

    * 关系运算符中 ==、!=的优先级相等,<、<=、>、>=的优先级相等,且前者的优先级低于后者:2==3>1

    * 关系运算符的结合方向为”从左往右“:4>3>2

    * 关系运算符的优先等级小于算术运算符:3+4>8-2

六、逻辑运算

  * 有时候,我们需要在多个条件同时成立的时候才能执行某段代码,比如:用户只有同时输入了qq和qq密码,才能执行登陆代码,,如果只输入了QQ或者只输入了密码,就不能执行登陆嗲码。这中情况下,我们需要借助C语言提供的逻辑运算符。

  * 逻辑运算的结果只有2个:”真“为1,”假“为0

  1.&&逻辑与

    * 使用格式

      # ”条件A&&添加B“

    * 运算结果

      # 只有当条件a和添加b成立时,结果才为1,也就是”真“;其余情况的结果都为0,也就是”假“。因此,条件A或者添加B只要有一个不成立,结果都为0,也就是”假“

    *运算过程

      # 总是先判断条件A是否成立

      #如果添加A成立,接着再判断条件B是否成立:如果添加B成立,”条件A&&B“的结果为1,即”真“,如果条件B不成立,结果就是0,即”假“

      # 如果条件A不成立,就不会再去判断条件B是否成立:因为条件A已经不成立了,不管条件B如何,”条件A&&条件B“的结果肯定是0,也就是”假“

    *举例

      逻辑与的结合方向是”自左至右“ 。比如表达式(a>3)&&(a<5)

        # 若a的值是4:先判断a>3,成立:再判断a<5,成立。因此为1

        # 若a的值是2:先判断a>3,不成立,停止判断。因此结果为0

    * 注意

      # 若想判断a的值是否在(3, 5)范围内,千万不能写成3<a<5,因为关系运算符的结合方向为“从左往右”。比如a为2,它会先算3<a,也就是3<2,条件不成立,结果为0。再与5比较,即0<5,条件成立,结果为1。因此 3<a<5的结果为1,条件成立,也就是说当a的值为2时,a的值是在(3, 5)范围内的。这明显是不对的。正确的判断方法是:(a>3) && (a<5)

      # C语言规定:任何非0值都为“真”,只有0才为“假”。因此逻辑与也适用于数值。比如 5 && 4的结果是1,为“真”;-6 && 0的结果是0,为“假”

  2.||逻辑或

    * 使用格式

      ”条件A||条件B“

    * 运算结果

    当条件A或者条件B只要由一个成立时(也包括添加A和条件B都成立),结果就为1,也就是”真“;只有当条件A和条件B都不成立时,结果才为0,也就是”假“。

    * 运算过程

      总是先判断添加A是否成立

      # 如果条件A成立,就不会再取判断条件B是否成立:因为条件A已经成立了,不管添加B如何,”条件A“||"条件B"的结果肯定是1,也就是”真“。

      # 如果条件A不成立,接着再判断条件B是否成立:如果条件B 成立,”条件A“||”条件B“的结果就为1即”真“,如果添加B不成立,结果为0 即”假“

    * 举例

    逻辑或的结合方向是”自左至右“。比如表达式(a<3)||(a>5)

      # 若a的值是4:先判断a<3,不成立;再判断a>5,也不成立。因此结果为0 

      # 若a的值是2:先判断a<3,成立,停止判断。因此结果为1

      # 因此,如果a的值在(-∞, 3)或者(5, +∞)范围内,结果就为1;否则,结果就为0

    * 注意

    C语言规定:任何非0值都为“真”,只有0才为“假”。因此逻辑或也适用于数值。比如 5 || 4的结果是1,为“真”;-6 || 0的结果是1,为“真”;0 || 0的结果是0,为“假”

  

  3.! 逻辑非 
    * 使用格式 “! 条件A” 

    * 运算结果 
      # 其实就是对条件A进行取反:若条件A成立,结果就为0,即“假”;若条件A不成立,结果就为1,即“真”。也就是说:真的变假,假的变真。

    *举例

      # 逻辑非的结合方向是“自右至左”。比如表达式 ! (a>5)

 

 

      # 若a的值是6:先判断a>5,成立,再取反之后的结果为0

      # 若a的值是2:先判断a>3,不成立,再取反之后的结果为1

      # 因此,如果结果的值大于5,结果就为0;否则,结果为1

    *注意

      # 可以多次连续使用逻辑非运算符:!(4>2)结果为0,是”假“,!!(4>2)结果为1,是”真“,!!!(4>2)结果为0

      # C语言规定:任何非0值都为”真“,只有0才为假”0“。因此,对非0值进行逻辑非!运算的结果都是0,对0进行逻辑非!运算的结果为1。!5、!6.7、!-9的将诶过都为0,!0结果为1.

  4.优先级

    * 逻辑运算符的优先级别顺利为:小括号() > 负号 - >!> 算术运算符 > 关系运算符 >&&>|| 

    * 表达式!(3>5) || (2<4) && (6<1) :先计算 !(3>5)、(2<4)、(6<1),结果为1,式子变为1 || 1 && 0,再计算1 && 0,式子变为1 || 0,最后的结果为1

    * 表达式3+2<5||6>3 等价于 ((3+2) < 5) || (6>3),结果为1 

    * 表达式4>3 && !-5>2 等价于 (4>3) &&  ((!(-5)) > 2) ,结果为0 

七、三元运算符

  *N目运算符->三目运算符 

    # int a = 5?10:2;

    # 获得a、b中的最大数 

    #  获得a、b、c中的最大数



//运算符


运算符:

        算术运算符:+ - * / % 

        逻辑运算符:&& || ! 

        关系运算:  > < >= <=  

                    == !=

        位运算符:  &  | ^  ~  

        移位运算符: << >>  移位运算符看代码2.c

        成员运算符: . ->  

        单目运算符:(这种运算符只对一个操作数进行运算)

                取地址& 

                解引用* 

                类型强转()

        赋值运算符: =   += -= *= /= %= <<= >>= &=

                         |= ^= 

        条件运算符: ?:

        逗号运算符: ,

        下标运算符:[]

        括号运算符: () {} 

*********************************

表达式:

            1, 变量名与运算符的组合 叫表达式

            2, 变量名 也可以是表达式

        例:下列情况都是表达式

                int a,b,c;

              a   b   c   a+b   a*c   

              a+b*c/a%12

              (a)

表达式的值:

            如果是赋值表达式的话,那么表达式的值

            就是最终运算完成后的左值

            (左值:赋值表达式中的赋值符‘=’的左边

            的值,)

            (右值:赋值表达式中的赋值符‘=’的右边)

            普通表达式的值就是最终运算全部完成后

            的结果

            a+b 

            a+b*c  

            a%b*c

            a*c/b%10&d|c^b

            对于上面这个复杂的表达式不能确定

            它的值,所以要根据运算符的优先级

            和结合性来确定表达式的值

运算符的优先级:

            括号成员第一 () {} [] . ->

            全体单目第二 & * () ~ ! sizeof() 

                            ++ --

            乘除余三加减四  */%   +-

            移位五  关系六  <<  >>  > < >= <=

            等和不等排第七  == !=

            位与异或和位或  

            三分天下八九十  &   ^  |

            逻辑或和与      十二和十一

            条件高于赋值    ?:

                            = += -= *= /= <<= >>=

                            &= |= ^= 

            逗号运算级最低  ,  

根据运算符的优先级可以处理不同优先级的运算符的

运算顺序,但是相同优先级的运算符由结合性来决定

运算符的结合性:

            1, 赋值运算符具有右结合性

            2, 单目运算符具有右结合性

            3, 其它的所有运算符具有左结合性

***************

练习:

            1,  int a=10,b=20,c=1,d=0;

            求下列表达式的值:

                a&&b<<c||d++

            分析:

                编译器读源代码,从左到右

            1, a  发现a只是个操作数,接着找运算符

            2, a &&  发现逻辑与需要两个操作数

                     但暂时只有一个,所以接着要找

                     另一个操作数

            3, a && b 找到操作数b时,要先判断对b

                      的运算符有几个,如果只有一

                      个,就立刻运算,否则有两个运

                      算符的情况下要判断两个运算

                      符的优先级

            4, a && b <<  比较 && 和 << ,

                          发现<<优先运算,所以就

                          先运算<<,但是<<需要两

                          个操作数,所以要接着找<<

                          的第二个操作数

            5, a && b << c  找到c之后,要判断c有

                            几个运算符对它运算

            6, a && b << c || 比较 << 和 || ,

                              发现移位优先,移位

                              运算符的两个操作数

                              都到位了,所以可以

                              执行移位运算

            7, a && 40 || 

            8, a && 40 ||  比较 && 和 ||,发现&&高

            9,    1    || d  

            10,   1    || d++ 比较 || 和 ++,++高

            11,   1    || 0   (副作用: d=d+1) 

            12    1     到此结束

            注意:

                    1||(....) 都为1

                    0&&(....) 都为0 

                但:

                    1||(a++),c+b 

                    (1,2)的值是2

                    (a+b++,2) 逗号表达式的值是

                    最右边的表达式的值,但逗号之

                    前的表达式要参与运算

            a=10,b=20,c=1,d=0;

            a++||c--&&d+1<<b/a

               这个或的第二个操作数为:

                 ( c--&&d+1<<b/a ) 

            分析:

                1, a

                2, a++ 

                3, 10     (a=a+1  : a==1)

                4, 10 || 

                5, 10 || c  

                6, 10 || c--

                7, 10 || c--&&d

                8, 10 || c--&&d+1

                c--==d<c?c:d--




转载于:https://my.oschina.net/u/2603560/blog/638341

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/285405.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Maui学习之路(三)--Winui3深入探讨

Maui的学习之路 --- Winui3深入探讨学习Maui已经有一段时间&#xff0c;随着不断地深入&#xff0c;对Maui有了一些初步的了解。我们都知道Maui为了保持平台原生特性&#xff0c;所以在每一个平台都使用了平台自身的原生开发框架&#xff0c;如在Windows系统使用了Winui3作为UI…

centos 7.1 apache 源码编译安装

Apache编译安装 一&#xff0c;需要软件&#xff1a; http://mirrors.cnnic.cn/apache//apr/apr-1.5.2.tar.gz 1.apr-1.5.2.tar.gz http://mirrors.cnnic.cn/apache//apr/apr-util-1.5.4.tar.gz 2.apr-util-1.5.4.tar.gz http://exim.mirror.fr/pcre/pcre-8.38.tar.gz 3.pcre-8…

通过两级网关设计来路由服务网格流量

编者的话本文是来自笔者的公司 Tetrate[1] 工程师 Petr McAllister 的分享&#xff0c;Tetrate 的拳头产品是 Tetrate Service Bridge[2]&#xff08;下文简称 TSB&#xff09;&#xff0c;它是在开源的 Istio 和 Envoy 基础上构建的&#xff0c;但为其增加了管理平面。简介Tet…

H5开发中常用的js方法

2019独角兽企业重金招聘Python工程师标准>>> h5和app之间的webview交互 这是常用的交互方法之一&#xff0c;iOS可以使用WKWebView,安卓可以使用JsBridge,完成常见的交互效果。function webViewHandler(iosCallback, adrCallback) {if (getMobileOperatingSystem() …

GPS RTK(银河1)基准站架设、移动站设置完整操作流程

本文讲解GPS RTK(银河1)基站架设完整操作流程,包括相对坐标、点校正等操作。 文章目录 一、架设基准站二、启动基准站三、架设移动站四、设置移动站一、架设基准站 基准站一定要架设在视野比较开阔,周围环境比较空旷的地方,地势比较高的地方;避免架在高压输变电设备附近…

在.NET 6.0上使用Kestrel配置和自定义HTTPS

本章是《定制ASP NET 6.0框架系列文章》的第四篇。在本章&#xff0c;我们将学习ASP.NET Core的Kestrel配置和自定义HTTPS&#xff0c;好我们开始正文。在ASP.NET Core中&#xff0c;默认情况下HTTPS处于打开状态&#xff0c;这个不是问题&#xff0c;我们无需禁用它。因为如果…

Virtualbox安装增强工具失败

在安装Virtualbox增强工具安装时出现unable to find the sources of your current Linux kernel&#xff0c;安装失败&#xff0c;导致主机与虚拟机之间不能共享文件夹&#xff0c;不能复制粘贴&#xff0c;鼠标也不能直接移动到物理机&#xff0c;需要按快捷键才行。 解决办法…

C语言试题118之求1到20的每个数的阶层之和

✅作者简介:大家好我是码莎拉蒂,CSDN博客专家🥇🥇🥇 📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 1、题目 题目:求 1+2!+3!+…+20!的和 分析:此程序只是把累加变成了累乘。 2 、温馨提示 想获取更多…

java.lang.NoSuchFieldError: EMPTY_ORDERED_ITERATOR起因及解决办法

java.lang.NoSuchFieldError: EMPTY_ORDERED_ITERATOR 最近这个错误遇到了好多次&#xff0c;不过都很轻松的解决了&#xff0c;问题的起因是多了一个collection包&#xff0c;如下图 看到了&#xff0c;只要把其中的一个删除掉&#xff0c;更新启动Tomcat就行了。 本文转自suc…

[转]EL函数、自定义EL函数、自定义标签

EL函数 1、EL函数的作用&#xff1a;操作字符串 2、在JSP页面中要引入EL函数库 <% taglib prefix"fn" uri"http://java.sun.com/jsp/jstl/functions" %> 3、语法 ${ fn:方法名(参数) } 4、实例 <% page language"java" contentTyp…

C语言试题119之利用递归方法求 5的阶层

✅作者简介:大家好我是码莎拉蒂,CSDN博客专家🥇🥇🥇 📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 1、题目 题目:利用递归方法求 5的阶层 分析:递归公式:fn=fn_1*4的阶层 2 、温馨提示 想获取更多C…

深入学习http协议(转)

http://www.blogjava.net/zjusuyong/articles/304788.html转载来的&#xff0c;没看到原文地址。http协议学习系列1. 基础概念篇1.1 介绍HTTP是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;的缩写。它的发展是万维网协会&#xff08;World Wide Web Co…

CSS浮动属性Float到底什么怎么回事,下面详细解释一下

float 是 css 的定位属性。在传统的印刷布局中&#xff0c;文本可以按照需要围绕图片。一般把这种方式称为“文本环绕”。在网页设计中&#xff0c;应用了CSS的float属性的页面元素就像在印刷布局里面的被文字包围的图片一样。浮动的元素仍然是网页流的一部分。这与使用绝对 定…

MAUI Developer Day in GCR

点击蓝字关注我们编辑&#xff1a;Alan Wang排版&#xff1a;Rani Sun活动介绍作为一个支持在单一代码库中开发能够运行在 Android、iOS、macOS 和 Windows 等多平台的应用程序的跨平台框架&#xff0c;.NET MAUI &#xff08;多平台应用程序用户界面&#xff09;还在预览版时就…

C语言试题126之请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。

✅作者简介:大家好我是码莎拉蒂,CSDN博客专家🥇🥇🥇 📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 1、题目 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二…

【ArcGIS风暴】ArcGIS点云抽稀(稀疏化LAS点)详解案例教程

考虑对过采样 LAS 数据(例如通过摄影测量方式获得的点云以及多个叠加激光雷达扫描的返回值)使用稀疏化LAS点工具,以优化显示性能和加速分析操作。 文章目录 1. 创建las数据集2. 稀疏化LAS点适用版本:ArcGIS10.6以上。 1. 创建las数据集 扩展阅读:ArcGIS10.6创建LAS数据集…

20145313张雪纯《信息安全系统设计基础》第11周学习总结

20145313张雪纯《信息安全系统设计基础》第11周学习总结 教材 异常控制流&#xff08;ECF&#xff09; 最简单的“平滑序列”类型的控制流是指PC中相邻的指令在存储器中也相邻。而异常控制流则是指程序变量表示的内部程序状态中的变化、系统状态的变化等突发情况使得控制系统做…

Silverlight 5 beta新特性探索系列:9.视频快进快退和TextSearch对象对文字项查询

本节讲诉两个新特性&#xff1a;一、在Silverlight 5中可以控制MediaElement对象播放的视频进行快进快退控制。二、在Silverlight 5中的文字项进行搜索查询。 一、对于MediaElement媒体播放对象的视频进行快退快进控制 它是通过MediaElement.PlaybackRate属性进行控制的。当前此…

【错误异常大全】:ArcGIS Engine中C#无法引用ESRI.ArcGIS.AxControls问题

ArcGIS Engine中C#无法引用ESRI.ArcGIS.AxControls问题&#xff0c;具体如下。 发现在引用列表中找不到ESRI.ArcGIS.AxControls服务。 一直显示感叹号。 多次尝试添加无果&#xff0c;解决方法&#xff1a;选中引用列表中的ESRI.ArcGIS.AxControls&#xff0c;在属性表窗口中将…