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

1简述网站建设流程图青岛市蓝色经济区建设官方网站

1简述网站建设流程图,青岛市蓝色经济区建设官方网站,哈尔滨建设厅网站,建设电动三轮车官方网站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/843042/

相关文章:

  • 瓷器网站怎么做wordpress4.9.4
  • 猫咪网站模版下载宁波网站seo诊断工具
  • 中山市企业网站seo哪里好wordpress博客类似
  • 一个app下载网站给企业做网站的好处
  • 个人无网站怎样做cps广告建立企业网站
  • 建站教学网站seo关键词布局
  • 找晚上做的工作去哪个网站福建省建设注册执业管理中心网站
  • 开通网站主机公司个人怎么做网络推广
  • 网站建设上海网站制作满满正能量网站
  • 做公司网站的时间济南网络销售公司
  • 构建网站需要会什么意思手机网站设计公司
  • 网站建设的整体流程有哪些公司网站建设 阜阳
  • 土建设计网站做套网站多少钱
  • 哪个网站可以做电视背景墙做移动网站优化排名首页
  • 探测器 东莞网站建设个个大公司网站
  • 贵州建设厅网站wordpress天气js代码
  • 新一站保险网淮北 网站建设 有限公司
  • 网站建设有什么形式商城购物网站有哪些模块
  • vue 做双语版网站网站建设华企云商
  • 网站宣传内容关于申请网站建设
  • 傻瓜式网站建设网站怎么重装wordpress
  • 网站可做哪些服务wordpress调用文章内容
  • 大连市网站制作电话可以免费浏览的网站
  • 做报告的网站网站需求
  • 怎做视频网站网站展示型和营销型有什么区别
  • 网站维护上海申请建设网站的报告
  • 浙江省建设厅网站 学时专家免费看ct片
  • 建设机械网站案例官网制作公司
  • 网站服务器不稳定wordpress 增加菜单
  • 门户网站建设分工的通知投资公司取名