C语言的副作用

C表达式的基本作用是求值。
C/C++ 语言是“基于表达式的语言”,所有计算(包括赋值)都在表达式里完成。

例如,变量a的类型为int,表达式a=5的作用有两个,一个是主作用:求表达式的值,该表达式的值为5;另一个作用是副作用:将表达式a=5的值赋值给变量a。

再如:在计算表达式a++时,它有两个作用,一个是主作用:求a的值,另一个是副作用:a的值加1。

printf(“hello\n”)副作用就是将"hello\n"打印出来

在C99及以上标准中,副作用的定义是:易变访问对象、修改对象、修改文件,或者调用包含这些操作的函数都是副作用,它们都会改变执行环境的状态。(这里要有点儿状态机的感觉)

Accessing a volatile object. modifying an object, modifying a file, or calling a function that
does an of those operations arc all side effects, which are changes in the state of the execution
enveronment. Evaluation of an expression may produce side effects.

引用透明:如果一个表达式(或子表达式)只计算出值而不改变环境,我们就说它是引用透明的,这种表达式早算晚算对其他计算没有影响(不改变计算的环境。当然, 它的值可能受到其他计算的影响)。比如:(a+b)*(c+d),无论先计算乘号两边都可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值