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

k歌里的相片是通过网站做的吗wordpress当地时间

k歌里的相片是通过网站做的吗,wordpress当地时间,青岛网站制作服务,青岛房产网查询C语言中复杂表达式的求值顺序 num (5 2) * (9 * 6);如果我问你:上面的c程序在执行的时候到底是先算(5 2)还是(9 * 6)?你会怎么回答? 无非就两种:先算(5 2&#xff…

C语言中复杂表达式的求值顺序

num = (5 + 2) * (9 * 6);

如果我问你:上面的c程序在执行的时候到底是先算(5 + 2)还是(9 * 6)?你会怎么回答?

无非就两种:先算(5 + 2)或者先算(9 * 6)对吧?那么我来告诉你,这两种结果都不对,答案是不确定,你应该先问编译器。

副作用和序列点

在解释上面的概念之前,我们先来介绍两个专业术语:副作用、序列点

副作用

副作用(side effect)是指对数据对象或文件的修改。
例如:

states = 50;

它的副作用是将变量的值设置为50。

看起来,副作用更像是主要目的,其实并不是。从C语言的角度来看,上面的代码的主要目的是对表达式求值。

给出4 + 6,C会对齐求值得到10,同理,给出states = 50;C语言会对其进行求值得到50。

在C语言的眼里,上面的程序更像是这样的:

(states = 50);

类似的,printf函数显示的信息其实是它的副作用(printf的返回值是待显示字符的个数,也就是放入输出缓冲区字符的个数),不懂缓冲区的可以看我的这篇文章:你真的理解printf函数吗?

序列点

序列点(sequence point)是程序执行的点,在这个点上,所有的副作用都会在进入下一步之前发生。语句中的分号标记了一个序列点。

分号的意思是:在这个语句之前,赋值运算符、递增运算符和递减运算符对运算对象做的改变必须在程序执行下一条语句之前完成。

求值顺序

C把先计算哪一个部分的决定权留给编译器的设计者,以便针对特定系统优化设计。
也就是说,对于开始的那个程序,哪一段表达式先被计算是不确定的。

但是,对于逻辑运算是个例外。

在C语言中,保证逻辑表达式的求值顺序是从左往右。&&和||都是序列点,所以一个程序在从一个运算对象执行到下一个运算对象之前,所有的副作用都会生效。

并且,重要的一点是,C一旦发现某个元素让表达式无效,便立即停止求值。

有了上面的规则,才能写出下面的代码:

while ((c = getchar()) != ' ' && c != '\n');

在上面的代码中,读取字符直到遇到第一个空格或者换行符停止,需要注意的是,如果没有上面的规则,c != '\n'这个语句就有可能在c = getchar()之前执行了,这样一来,就不能保证语义的正确性了。

http://www.yayakq.cn/news/730496/

相关文章:

  • 关于网站设计的书籍微盟微商城多少钱一年?
  • 高端网站建设文案遵义58同城网
  • 建设部职称网站网站建设朋友圈怎么写
  • 萍乡建网站wordpress 去空格
  • 临清网站建设价格广东手机网站建设费用
  • 怎样提高网站的打开速度知乎网站内容建设的逻辑
  • 盐山网站制作wordpress企业魔板
  • 红黑配色网站wordpress 1.0
  • 企业网站策划过程网站建设 思路
  • 可以做内容的网站江苏省建设招标网站首页
  • 南沙开发区建设和交通局网站网站建设与管理的考试
  • 重庆网站建设方案详细方案wordpress去除评论
  • 学做网站要会哪些网站内容建设的原则
  • 建立一个网店网站营销型网站建设哪里济南兴田德润优惠吗
  • 网站目标建设国际国内时事
  • 天元建设集团有限公司资质长沙seo优化排名推广
  • 网站建设终端是什么如何做制作头像的网站
  • wang域名 网站能帮忙做网站建设
  • l临沂互助系统网站开发张家港哪家做企业网站
  • 网站怎么建设高端公司山东网站备案网站
  • 网站建设课程设计心得网页制作东莞
  • 梁山做网站的公司瑞安地区建设网站
  • vue做的手机网站制作招聘海报的app
  • 网站建设首选建站系统应遵循哪些原则
  • 无锡的网站建设公司中国常州网官网
  • 网站泛解析wordpress是mvc架构吗
  • 怎么写网站文案音乐门户网站模板
  • wordpress创建企业网站建设部网站官网查询
  • 做网站工资年新多少在广东烟台网站建设策划方案
  • 潍坊网站建设 潍坊做网站网站制作加教程视频