继续接着上一次ios从入门到放弃之C基础巩固-----printf函数、scanf函数、scanf函数实现原理来巩固C语言基础,这次学习的是一个非常不起眼的语言基础----运算符,这里主要是对一些比较容易犯错的给拎出来再复习一下,于我而言是有用的,所以即使容易也不厌其烦的来好好复习~~

运算符:

算术运算符:

%取模运算:

1、两侧必须都为整数:

2、 利用%求出来的余数是正数还是负数,由%左边的被除数决定,被除数是正数,余数就是正数,反之则反。

3、如果取模运算的左边小于右边,那么结果就是左边。

类型转换问题:

1、自动类型转换(隐式转换):

对应的就还有一个显示转换,这块就不过多说明了,基本上好多语言都有。

2、自动类型提升:

其中这里有个细节:算术运算符规定只有相同类型的数据才可以进行运算,那对于咱们这个例子很明显10是整型,9.0是小数类型,数据类型不一样,那最终咋又能运算了呢?其实是通过类型提升来达到计算的目的的,如下:

也就是会将小类型int自动转成大类型double,然后再进行运算。

3、参与运算的操作数是什么类型,那么计算出来的结果就是什么类型

而要想如预期,这样做就可以了:

根本原因还是由于在运算时发现这两操作数不一样,而根据“算术运算符规定只有相同类型的数据才可以进行运算”的原则,会自动将2提升为2.0,然后操作数都为double类型之后,那最终的计算结果不就为double了么?所以结果就如预期啦。

另外还有一种做法就是显示转换类型也可以达到相同的效果:

这里有一个比较容易犯错误的写法:

赋值运算符:

这里注意这一点既可:

标红的其实是这么算的:int number =  number + (2 * 3 * 4),而不要理解成:int number =  (number + 2) * 3 * 4。

自增自减:

关于这块最需要注意的就是自增放在变量前和变量后的区别了,先看一下表描述了其区别:

下面撸一撸这块:

可以看到a++整个表达式赋值给b时并未累加的,还是10,接下来再改一下:

总的来说是:++在前,先自增再去处;++在后,先运算再自增。

下面再来继续巩固一下这块的知识,操练一下:

这结果有疑问么?下面来简单分析一下:

所以结果就如输出的所示了。 下面再来改一下:

这块也比较好理解,就不过多解释了,都是同一个套路。继续:

sizeof运算符:

sizeof可以用来计算一个变量或一个常量、一种数据类型所占的内存字节数,注意:sizeof不是一个函数,它是一个运算符哈【面试可能会被问到】~~

下面来使用一下:

此时对于sizeof还有另一种写法:

下面再来看一下变量的情况:

接下来还可以计算数据类型占的字节数:

这里有一个注意点:如果计算的是数据类型,其()是不能省略的哈~~

逗号运算符:

在C语言中逗号“,”也是一种运算符,称为逗号运算符。其功能是把多个表达式连接起来组成一个表达式,称为逗号表达式。

下面来使用一下:

我们知道只要是运算符那么一定会有运算结果的对吧?那逗号运算符也不例外,它的结果是最后一个表达式的结果,下面来验证一下:

但是上面这种仅作了解,实际工作基本上用不到~~唯一用得到的可能是面试~~

关系运算符:

C语言的真假性:

C语言规定,任何数值都有真假性,任何非0值都为“真”,只有0才为“假”。也就是说,108、-18、4.5、-10.5等都是“真”,0则是“假”。

这块就不像java那样,true和false来表示真假了。

关系运算符的优化级:

优化级规则为:>、=、<= 优先级大于 ==、!=,下面举个栗子:

另外算数运算符的优化级大于关系运算符,再来看一下:

关系运算符的结合性:

关系运算符都是双目运算符,其结合性均为左结合。例如4>3>2:先算4>3,条件成立,结果为1。再与2比较,即1>2,条件不成立,结果为0。因此4>3>2的结果为0。试一下:

那如果优先级和结合性同时存在呢?此时是先执行优先级,再执行结合性,比如:

。。这有点晕呀,这个只是为了学习才会故意这么整的,实际工作基本上不会这样写的,下面来简单分析一下结果为啥是1:

所以此时式子就变为int result = 11 > 9 == 3 > 1;接下来全是关系运算符了,很明显>要优先级==,按照相同关系运算符结合性是从左至右的原则,所以此时又可以变为:1 == 1,最终结果当然就是1啦。

其实对于这样的规则不用记,对于需要优先执行的用圆括号括起来你就清晰明了不容易犯错了,比如对于这个复杂的代码这样改一下:

逻辑运算符:

C语言中提供了三种逻辑运算符:

关于逻辑运算符值得说明就是可以直接跟数字进行计算,因为C语言中任何数字都有真假性,非0既真,所以这块是跟Java不太一样的,试一下:

另外对于非运算,可以多次非,啥意思?

它的结合性是从右至左,也就是从右边开始算起。

优先级:

整体的优先级是这么个顺序:

逻辑非优先级:

等于先计算!0等于1,然后再计算+1=2。

算术运算符与逻辑运算符优先级:

因为算法运算优先级大于逻辑运算,所以是6 && 1= 1。

关系运算符与逻辑运算符优先级:

关系运算符的优先级大于逻辑运算符,其结果也比较好算出来。

短路问题:

关于短路特性应该是人人皆知了,下面复习一下:

1、与短路:&& 只要第一个条件表达为假那么后面的条件表达就不参与运算了

2、或短路:|| 只要第一个条件表达式为真那么后面的条件表达式就不参与运算了

三目运算符:

这块有两点注意点:

1、三目运算符的结合方向是从右到左,下面看个例子:

2、三目运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。例子如下:

if条件:

注意点:

这里有啥可说的呢,嗯,就说一点:

这个在Java肯定是可行的,这是因为在C中如果在if后面定义变量其定义语句一定得要写在{}当中,如下:

操练:利用if写一个石头剪子布的小游戏

规则:

平常我们都是人与人进行此游戏的玩法,这里当然就是人机交换喽,规则简单来说是这样的:

  • 有两个角色:玩家和电脑;

  • 两个角色都可以出,0代表石头;1代表剪子;2代表布;

  • 玩家的出拳可以让用户自己输入;

  • 电脑的出拳必须生产一个随机数,如何产生随机数呢?

  • 最后再将玩家的出拳和电脑的出拳进行比较,得出比赛结果,其判断结果的条件有如下三个:

    那结果就是我赢了【我出的大,电脑出的小】、我输了【我出的小,电脑出的大】、平局【我和电脑出的是一样的】。

实现:

对于这种小逻辑就不过多说明了,撸就对了。

1、先定义玩家和电脑角色:

2、先让电脑出拳:

这里需要从0、1、2中随机出一个数字,那在C中随机数咋出呀,其实有现成的函数了,如下:

注意需要导入一个头文件才行:

3、用户出拳:

4、结果比较:

#include #include int main(int argc, const char * argv[]) {    /* 实现石头剪刀布逻辑 */    // 定义 0.剪刀 1.石头 2.布    // 1、定义变量 玩家和电脑    int player,computer=0;        // 2、让电脑先出拳    //随机出拳    //如何进行随机出拳,借助一个stdlib.h下一个产生随机数的函数    // arc4random_uniform(n) 0~n-1之间的随机的整数    computer = arc4random_uniform(3); //0 1 2,跟Java的Random.nextInt()差不多    // 3、用户出拳    printf("请出拳:0.剪刀 1.石头 2.布\n");    scanf("%d",&player);    // 数据合法性的校验    if (player<0||player>2) {        printf("非法的输入");        return 0;    }    // 4、判断比较 //先判断用户赢的情况    if((player==0&&computer==2)||    (player==1&&computer==0)||    (player==2&&computer==1)){        printf("我靠,你赢了!\n");    }else if((computer==0&&player==2)||    (computer==1&&player==0)||    (computer==2&&player==1)){        printf("很遗憾,你输了!\n");    }else{        printf("平局\n");    }    printf("player = %i, computer = %i\n", player, computer);    return 0;}

运行:

先学到这边,对于老手来说学习这些这么简单的有点浪费时间,对于我而言细节不怕简单,就怕遗漏细节,脑子笨~~

shell逻辑运算符优先级_ios从入门到放弃之C基础巩固运算符相关推荐

  1. Go单元测试从入门到放弃—0.单元测试基础

    这是Go单测从入门到放弃系列教程的第0篇,主要讲解在Go语言中如何做单元测试以及介绍了表格驱动测试.回归测试,并且介绍了常用的断言工具. Go语言测试 go test工具 Go语言中的测试依赖go t ...

  2. Lwip从入门到放弃之(一)---基础网络知识扫盲

    Lwip从入门到放弃之-基础网络知识扫盲(一) 由于工作中用到了有关Lwip的有关知识,本人作为一个网络通信协议的门外汉,打算系统的学习一下以太网通讯的有关知识.而Lwip作为一款开源的轻量级TCP/ ...

  3. 深度学习---从入门到放弃(一)pytorch基础

    深度学习-从入门到放弃(一)pytorch Tensor 类似于numpy的array,pandas的dataframe:在pytorch里的数据结构是tensor,即张量 tensor简单操作 1. ...

  4. shell逻辑运算符优先级_逻辑运算符有那些?

    展开全部 逻辑NOT 逻辑AND 逻辑OR 优先级为:NOT AND OR 同级运算从左到右 在运行中输入cmd,进入dos,输入cd\进入C盘的目录e68a8462616964757a6869646 ...

  5. Python编程从入门到放弃 - Part 1基础知识习题解析

    目录 第1章 起步 第2章 变量和简单数据类型 第3章 列表简介 第4章 操作列表 第5章 if语句 第6章 字典 第7章 用户输入和while循环 第8章 函数 第9章 类 第10章 文件和异常 第 ...

  6. 深度学习---从入门到放弃(九)RNN入门

    深度学习-从入门到放弃(九)RNN入门 1.RNN简介 RNN(Recurrent Neural Network)是一类用于处理序列数据的神经网络.回想一下我们之前说到过的CNN,它可以通过在空间上共 ...

  7. python ** 运算符_Python从入门到放弃运算符(2)

    摘要:上一篇Python从入门到放弃-运算符(1),讲了Python的运算符中的算术运算符.赋值运算符.比较(关系)运算符,这篇继续讲Python的运算符. 逻辑运算符 逻辑运算符是对真和假两种布尔值 ...

  8. linux Shell(脚本)编程入门实例讲解详解

    linux Shell(脚本)编程入门实例讲解详解 为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具.Shell不仅仅是命令的收集, ...

  9. JavaScript从入门到放弃 -(六)正则表达式

    正则表达式 1. 正则表达式概述 1.1 什么是正则表达式 1.2 正则表达式的特点 2. 正则表达式在JavaScript中的使用 2.1 创建正则表达式 2.1.1 通过调用 RegExp 对象的 ...

最新文章

  1. 如何避免眼高手低?(转载)----希望初入职场的朋友共勉吧!
  2. android 广告设置秒数,Android动态显示具体到秒的相聚时间
  3. div边框加入文字标题
  4. java并发编程(13)-- 线程 死锁和定位
  5. 学习react的网站
  6. java消费金额,java编程300例:7.根据用户的消费情况计算用户的享受的折扣
  7. 路由器的架构集指令集
  8. 基于单片机的智能饮水机控制系统设计(毕业设计资料)
  9. 我的编程之路——VB篇
  10. java applepay_java后端处理Apple Pay流程
  11. 数据库分析之概念结构设计
  12. tibco linux安装手册,Tibco 产品安装手册.doc
  13. 怎么解决百度快照劫持咋办咋解决 、百度快照劫持如何处理
  14. Docker参数 -i -t 的作用
  15. 智能分层、满足更高工作负载,亚马逊云科技加速云端存储服务创新
  16. 用Python的matplotlib绘制残差分析散点误差棒图
  17. UBI,MTD(Memory Technology Device),raw flash,emmc,Flash,Block Device
  18. 计算机与机械专业 有什么大学排名,2017机械排名211大学排名
  19. 知识图谱本体建模之RDF、RDFS、OWL详解
  20. NDCG评价指标讲解

热门文章

  1. 卸载后的mysql和navicat怎么清除干净_小而巧的卸载工具
  2. Python编程基础:第四十八节 对象作为参数Objects as Argument
  3. 数据库新秀 postgresql vs mongo 性能PK
  4. 关于架构的优化和设计,架构师必须悟透的事情
  5. How can I exclude directories from grep -R?
  6. jms在jboss上的简单应用
  7. 星型模型和雪花型模型比较
  8. 计算机视觉工具包Luminoth
  9. Learning to rank在淘宝的应用
  10. 江苏省高中计算机课程标准,教育部普通高中信息技术课程标准