博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言中的副作用、序列点、完整表达式
阅读量:6644 次
发布时间:2019-06-25

本文共 1279 字,大约阅读时间需要 4 分钟。

C语言中有个术语叫:副作用

副作用其实是对数据对象或文件的修改。(数据对象的定义是:用于存储值的数据存储区域)

例如语句 states = 50;

从C语言的角度来讲:这个赋值表达式的副作用是将变量的值设置为50;目的是对表达式求值;

但是使用赋值表达式的主要目的(真正目的)就是使用其副作用(将变量的值设置为50);

除此之外,递增、递减运算符也有副作用;我们使用它们其实主要目的是使用其副作用。即递增、递减的副作用;

例如printf()函数,我们使用它的目的是使用其副作用,其副作用是显示信息。它从C语言角度来说,目的是返回待显示字符的个数。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

序列点:

是程序执行的点,所有的副作用都在进入下一步之前发生;

语句中的分号标记了序列点;

当然不一定要分号才表示序列点;

完整表达式的结束也是一个序列点

例如:

while (guests++<10)

  printf("%d \n",guests)

上面程序当中:guests++<10 就是一个完整的表达式,该表达式的结束也是一个序列点。

guests++<10的意思是guests先跟10比较(比较会得到布尔值True、False,这个过程是求值,也就是C语言角度来说的目的),再递增(把guests的值加1,即对数据对象或文件的修改,即副作用。这个副作用其实也是我们编写程序角度的主要目的。)。

guests简单概括就是先比较(求值)再递增。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

完整表达式:

这个表达式不是另一个表达式的子表达式;

表达式语句中的表达式,循环条件的测试条件表达式,都是完整表达式。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

补充一下表达式expression、语句statement的概念:

 

表达式:

表达式是由运算符和运算对象组成的。

运算对象是运算符操作的对象。
对简单的表达式是一个单独的运算对象。
表达式最重要的特性之一就是每个表达式都有一个值。
要获得这个值,必须根据运算优先级规定的顺序去操作。

 

语句

语句是C语言的基本构建块。

一条语句相当于一条完整的计算机指令。
在C中,大部分语句都以分号结尾。
最简单的语句是空语句
真正有效的语句是可以改变值或调用函数;

注意:语句和表达式不能划等号;

语句的分类:表达式语句、迭代语句、跳转语句、声明等。

声明创建了名称和类型,并为其分配内存空间和位置;

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

转载于:https://www.cnblogs.com/grooovvve/p/9826127.html

你可能感兴趣的文章
使用客户端登陆ftp 500 OOPS: cannot change directory:/root
查看>>
docker 私用仓库Harbor搭建及配置
查看>>
我的友情链接
查看>>
Spring 数据库处理Clob/Blob大对象
查看>>
我的友情链接
查看>>
理解HTTP协议
查看>>
python学习感言
查看>>
Android中实现图片的异步加载学习笔记
查看>>
2015/5/4 谈谈进程、线程
查看>>
我的友情链接
查看>>
Linux计划任务
查看>>
今天做了一张手机原型图,跟大家分享一下
查看>>
巧用分类信息做网站的口碑推广
查看>>
深夜过后的寂静
查看>>
理解并取证:ICMPV6代替IPV4中的ARP进行IPv6的MAC地址解析
查看>>
Linux_ 网络配置及操作
查看>>
IP地址冲突解决方案,局域网IP地址冲突如何解决?
查看>>
【套路·分享】免费https ssl证书获取
查看>>
数据库知识体系梳理(一)
查看>>
武动乾坤
查看>>