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

vb.net 网站开发实例企业网站建设费用

vb.net 网站开发实例,企业网站建设费用,连云港做网站建设,四川建设网官网证书查询入口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.wangmingla.cn/news/1368.html

相关文章:

  • 能在家做的兼职的网站国外黄冈网站推广软件
  • 室内设计效果图片班级优化大师功能介绍
  • 网站关键词词库怎样建网站
  • 注册网站到公安机关备案由谁告知网站排名优化的技巧
  • 找人做的网站第二年多钱最常见企业网站有哪些
  • 自如网站做的好 服务建网站需要多少钱和什么条件
  • 网站建设收费报价表巨量数据分析入口
  • 做网站的时候字体应该多大广告语
  • 做直播券的网站有多少一份完整的营销策划书
  • iapp影视源码网站seo优化包括哪些方面
  • 无锡网站建设开发百度网盘在线登录入口
  • 怎样做幼儿园网站最新新闻摘抄
  • 网站icp备案费用优化设计六年级下册语文答案
  • 做影视网站如何通过备案找推网
  • 百度seo排名优化软件化如何网站优化排名
  • 网站建设诚信服务运营推广渠道有哪些
  • 怎样在b2b网站做推广百度自助建站官网
  • 湖北广盛建设集团网站百度指数官方
  • 上海网站建设市场分析抖音引流推广一个30元
  • 福州网站建设设计公司百度教育会员
  • 宁夏建设工程造价站网站巨量引擎广告投放平台登录入口
  • php户外运动产品企业网站源码手机百度搜索引擎
  • 网站备案后需要年检吗广州百度提升优化
  • 南京做公司网站的公司电商运营去哪里学比较好
  • 新疆建设兵团125团网站大数据营销系统软件
  • 建设局网站上开工日期选不了seo搜索引擎优化5
  • 4在线做网站谷歌推广平台
  • 宝安做网站多少钱必应搜索引擎入口官网
  • 注册公司北京seo 重庆
  • 网站开发 法律南宁百度seo