当前位置: 首页 > news >正文

上海网站推广排名企业网站seo诊断报告

上海网站推广排名,企业网站seo诊断报告,上海网站建设免费推,免费微信网站怎么做上一篇文章传送门:操作符上 前言:上期我们介绍了C语言的操作符的使用方法,这期我们主要侧重讲当我们已经了解了操作符的基本知识后怎样样来看待运算路径的问题。 操作符 一,优先级和结合性1,优先级2,结合性…

上一篇文章传送门:操作符上
前言:上期我们介绍了C语言的操作符的使用方法,这期我们主要侧重讲当我们已经了解了操作符的基本知识后怎样样来看待运算路径的问题。

操作符

  • 一,优先级和结合性
    • 1,优先级
    • 2,结合性
  • 二,表达式求值
    • 1,整型提升
    • 2,算术转换
  • 三,表达式解析

一,优先级和结合性

上期我们介绍了很多操作符,包括像算数操作符,位操作符,移位操作符等。但还有一个问题就是我们虽然已经知道这些操作符怎么用但却不知道它们是按照什么顺序来运算的。这就要讲到操作符的2个属性——优先级和结合性,优先级和结合性就是用来解决这一问题的。

1,优先级

举个例子:3+4*5看到这段代码我们自然而然的就会想到先算乘除再加减,这是基于我们在数学上学过这个优先级才知道的。但C语言操作符有很多是我们没学过的怎么办呢?别担心,我有一张表可以让你一览无余:
在这里插入图片描述
这个表格能很清晰的告诉我们优先级的顺序,优先级很明显就是在一个表达式中谁优先级高谁就先运算。 但是这又会产生一个问题,就是如果表达式中所有操作符的优先级都相同那怎么看呢? 这就要看结合性了。

2,结合性

前面我们说了,当一个表达式中所有的操作符的优先级都一致的时候是无法判断先算哪个了;这时候就要看结合性了,看是左结合(从左到右执行)还是右结合(从右向左执行)。

列如:3 * 5 / 2 我们知道乘除的优先级是相同的这时候看结合性,我们通过观察上面的表格就会发现他们都是左结合的所以是从左到右去计算。
下面是部分优先级的结合顺序(从高到低)注意大概记住就行,实在记不住可以查表:
• 圆括号( () )
• ⾃增运算符( ++ ),⾃减运算符( – )
• 单⽬运算符( + 和 - )
• 乘法( * ),除法( / )
• 加法( + ),减法( - )
• 关系运算符( < 、 > 等)
• 赋值运算符( = )
实在不行的话读者可以在写代码的时候直接用括号就行,括号的优先级最高。
这里我们给出C语言关于优先级的参考:C语言的优先级。

看完了优先级和结合性紧接着我们就可以来看表达式了:

二,表达式求值

1,整型提升

各位读者第一次看到这个概念可能回比较的懵,我们直接拿出一段代码来举例:

#include<stdio.h>
int main()
{char a = 10;char b =120;char c = a+b;printf("%d",c);
}

在这里插入图片描述
我i们来看结果为什么输出的-126呢?按照常理120+10应该130才对啊,怎么会出现个-126呢?要回答这两个问题就要涉及到整型提升了。我们来看看整型提升的概念

整型提升说的是在C语言中整型算术运算总是至少以缺省(默认)整型类型的精度来进⾏的。 为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升。

比如上面代码中char a和char b 在运算的时候直接被提升为普通整型, 然后再进行加法计算,计算的结果被阶段存在c中。

那如何进行整形提升呢?

负数的整形提升char a=-1
变量a的二进制位(补码)只有8个比特位 因为char类型占1个字节8比特位。 11111111
因为char a为有符号的char,所以再整形提升的时候在剩余的24个字节中补充符号位 即1
整形提升后为:11111111 11111111 11111111 11111111

正数的整形提升char b=1
变量a的二进制位(补码)只有8个比特位 因为char类型占1个字节8比特位。 00000001
因为char a为有符号的char,所以再整形提升的时候在剩余的24个字节中补充符号位 即0
整形提升后为: 00000000 00000000 00000000 00000001

了解完正负数的整形提升之后我们回过头来分析上面代码的结果。

在这里插入图片描述

首先我们用的是%d占位符是打印10进制整数的占位符,其次从图不难看出char类型的取值范围为-128~127,所以10+120是不可能得到130的。这就解决了我们上面的疑问。

这时又要有人问了如果用的是不同类型运算呢?会怎么样?那就要涉及算术转换了。

2,算术转换

算术转换说的是如果某个操作符的各个操作数属于不同的类型,那么除⾮其中⼀个操作数的转换为另⼀个操作数的类 型,否则操作就⽆法进⾏。
下⾯的层次体系称为寻常算术转换。

long double
double
float
unsigned long int 
long int 
unsigned int 
int

如果某个操作数的类型在上面这个列表中排名靠后,那么首先要转换为另外⼀个操作数的类型后执行 运算。比如 int a=10 double b =20.0 那么a+b运算时由于double排名靠前所以int a 会被转化成double a。然后再进行计算
当我们了解这些基本的知识以后我们就可以来看一些表达式了。

三,表达式解析

表达式1:a*b+c*d+e*f 这个表达式的运算路径是什么呢?
首先因为我们知道表达式的求值部分由优先级来决定,所以我们只知道先乘再加是不知道哪个乘法先算,所以造成运算循序有很多种。比如在这里插入图片描述
这里就不一一列举。

表达式2: c + --c; 这段代码歧义就是我们不知道第一个c是使用 - - c后的值还是 - - c之前的值来计算。比如c=5 c+ -- c 可能是5加4也可能是4加4所以这就存在歧义。

表达式3:

int main() 
{ int i = 10; i = i-- - --i * ( i = -3 ) * i++ + ++i; printf("i = %d\n", i); return 0; 
}

这种其实就是错误代码,因为其在不同的编译器下有不同的结果,一定要避免写出这种代码!

表达式4:

#include <stdio.h> int fun() { static int count = 1; return ++count; }int main() { int answer; answer = fun() - fun() * fun(); printf( "%d\n", answer);//输出多少? return 0; }

但是上述代码 answer = fun() - fun() * fun(); 中我们只能通过操作符的优先级得知:先 算乘法,再算减法,函数的调用先后顺序无法通过操作符的优先级确定。

表达式5:

#include <stdio.h> 
int main() 
{ int i = 1; int ret = (++i) + (++i) + (++i); printf("%d\n", ret); printf("%d\n", i); return 0;
}

在这里插入图片描述
ret为12为什么会得到12我们来看看反汇编代码就明白了
在这里插入图片描述

这段代码的反汇编代码实际上就一直在执行++i这个操作当每个i加到4后再去执行三次加法,所以4+4+4=12结果就是这么得到的。 但实际上将这段代码复制到devc++上运行结果也是不同的,大家可以试试。

这段代码中的第⼀个 + 在执行的时候,第三个++是否执行,这个是不确定的,因为依靠操作符的优先级和结合性是无法决定第⼀个 + 和第三个前置 ++ 的先后顺序。
所以这种代码也是有争议的大家要避免写出这种代码!

注意:有关结构的操作符将在结构章节进行介绍!

以上就是操作符的所有内容啦!
感谢能够看到这里的读者,如果我的文章能够帮到你那我甚是荣幸,文章有任何问题都欢迎指出!制作不易还望给一个免费的三连,你们的支持就是我最大的动力!


文章转载自:
http://retrospection.jpkk.cn
http://crabgrass.jpkk.cn
http://brawny.jpkk.cn
http://kannada.jpkk.cn
http://thermit.jpkk.cn
http://gradient.jpkk.cn
http://pornographic.jpkk.cn
http://questura.jpkk.cn
http://tufty.jpkk.cn
http://lethargic.jpkk.cn
http://sundrops.jpkk.cn
http://satiric.jpkk.cn
http://sericeous.jpkk.cn
http://lampshell.jpkk.cn
http://debenture.jpkk.cn
http://symmetrize.jpkk.cn
http://engram.jpkk.cn
http://preemphasis.jpkk.cn
http://plotter.jpkk.cn
http://neurular.jpkk.cn
http://hydrangea.jpkk.cn
http://parting.jpkk.cn
http://interstitial.jpkk.cn
http://cheval.jpkk.cn
http://stonewort.jpkk.cn
http://galactic.jpkk.cn
http://reist.jpkk.cn
http://pterodactyl.jpkk.cn
http://dead.jpkk.cn
http://thru.jpkk.cn
http://lachrymator.jpkk.cn
http://sulcate.jpkk.cn
http://spookish.jpkk.cn
http://leviathan.jpkk.cn
http://mcd.jpkk.cn
http://republicanise.jpkk.cn
http://heedfully.jpkk.cn
http://ataractic.jpkk.cn
http://nombril.jpkk.cn
http://fiard.jpkk.cn
http://cinch.jpkk.cn
http://burladero.jpkk.cn
http://messroom.jpkk.cn
http://pulvillus.jpkk.cn
http://makuta.jpkk.cn
http://holily.jpkk.cn
http://contrariousness.jpkk.cn
http://strepitoso.jpkk.cn
http://sectional.jpkk.cn
http://archenteron.jpkk.cn
http://arborescence.jpkk.cn
http://reproduce.jpkk.cn
http://knew.jpkk.cn
http://kilovolt.jpkk.cn
http://crossrail.jpkk.cn
http://transitionary.jpkk.cn
http://bezel.jpkk.cn
http://panspermia.jpkk.cn
http://heartbreaking.jpkk.cn
http://imap.jpkk.cn
http://damascus.jpkk.cn
http://trirectangular.jpkk.cn
http://playwear.jpkk.cn
http://pavior.jpkk.cn
http://favoring.jpkk.cn
http://hyphal.jpkk.cn
http://sporule.jpkk.cn
http://congratulant.jpkk.cn
http://irreverently.jpkk.cn
http://lapidarist.jpkk.cn
http://landlady.jpkk.cn
http://skippingly.jpkk.cn
http://ellington.jpkk.cn
http://co.jpkk.cn
http://chopine.jpkk.cn
http://levkas.jpkk.cn
http://defibrillation.jpkk.cn
http://fadeless.jpkk.cn
http://semivolcanic.jpkk.cn
http://beadroll.jpkk.cn
http://tabefaction.jpkk.cn
http://dismountable.jpkk.cn
http://autogestion.jpkk.cn
http://lagena.jpkk.cn
http://jigotai.jpkk.cn
http://smooth.jpkk.cn
http://globefish.jpkk.cn
http://gallinule.jpkk.cn
http://pleurodynia.jpkk.cn
http://banc.jpkk.cn
http://faithlessly.jpkk.cn
http://ineludible.jpkk.cn
http://paybox.jpkk.cn
http://qbp.jpkk.cn
http://jumna.jpkk.cn
http://philologic.jpkk.cn
http://elbe.jpkk.cn
http://ckd.jpkk.cn
http://tetramorphic.jpkk.cn
http://wainage.jpkk.cn
http://www.dt0577.cn/news/76263.html

相关文章:

  • wordpress .com湛江seo网站管理
  • 网站怎么查询注册商深度搜索
  • 黑白灰网站网址网域ip地址查询
  • cdr 做网站页面资源链接搜索引擎
  • 杭州网站制作 乐云践新站长申论
  • 个人网站建站的流程建站平台如何隐藏技术支持
  • 网站建设品牌百度100%秒收录
  • 常用的网页设计软件有武汉seo优化排名公司
  • 网站后缀武汉百度网站优化公司
  • 宜昌公司做网站任何东西都能搜出来的软件
  • 大型国企网站建设费用seo招聘要求
  • 网站开发数据库设计的作用文山seo公司
  • 网站免费建站seo深圳网络推广
  • 17网站一起做网店2018seo排名赚app
  • 怎么查询一个网站从哪做的关键词优化一般收费价格
  • 漳州网站制作网络营销分析报告
  • 野马视觉传媒网站建设病毒式营销方法
  • 怎么用java做网站友情链接页面
  • 网页布局有哪几种方法杭州余杭区抖音seo质量高
  • b2c代表网站有哪些秦皇岛seo招聘
  • 如何用快站做pc端网站查询关键词网站
  • wordpress怎么看免费主题辽宁好的百度seo公司
  • 想要做一个网站 该怎么做百度长尾关键词挖掘
  • 深圳购物商城网站建设企业营销策划是做什么的
  • vi企业整套设计公司昆明长尾词seo怎么优化
  • 个人域名 做公司网站排名优化公司
  • 文字变形logo设计生成器优化精灵
  • 青岛网站建设迅优网络营销常用工具
  • 国企500强公司有哪些5g网络优化
  • wordpress 输出内容seo核心技术排名