v+=e不等于v=v+e
当v有副作用时,其实v+=e不等于v=v+e
计算v+=e只会求一次v的值,而计算v=v+e则会求两次v的值。在后一种情况下,对v求值可能引起的任何副作用也都会出现两次。
a[i++] += 2; //i只会自增一次
如果用=代替+=,变成:
a[i++] = a[i++] + 2;
//i的值在别处被修改和使用了,因此上述语句的结果是未定义的。i的值可能会自增两次,无法确定发生了什么。
(通常我们不希望运算符改变它们的操作数,数学中的运算符就是如此。表达式i+j不会改变i或j的值,只是计算出i+j的结果。
大多数C语言运算符不会改变操作数的值,但是也有一些会改变。由于这类运算符所做的不再仅仅是计算出值,所以称它们有副作用(side effect)。如赋值运算符)
(子表达式的求值顺序------C语言没有规定子表达式的求值顺序
像 c = (b=a+2) - (a=1);//执行结果是未定义的,表达式(b=a+2) - (a=1),是先计算(b=a+2)还是(a=1)没有专门规定,由编译器决定,而结果又依赖于求值顺序.
C语言中只有四个运算符&&,||,?:和,号存在规定的求值顺序。&&,||首先对左侧操作数求值,只在需要时才对右侧操作数求值。运算符?:有三个操作数,在a?b:c中,操作数a首先被求值,根据a的值再求操作数b或c的值。而逗号运算符,首先对左侧操作数求值,然后该值被“丢弃”,再对右侧操作数求值。
注:
分隔函数参数的逗号并非逗号运算符。例如,x和y在函数f(x,y)中的求值顺序的未定义的,而在函数g((x,y))中却是确定的先x后y的顺序。在后一个例子中,函数g只有一个参数,这个参数的值是这样求得的。先求x,然后x的值被“丢弃”,接着求y的值)
v+=e不等于v=v+e相关推荐
- vector<int> v, vector<int> v(n) 与vector<int> v[n]的区别
一.vector<int> v表示声明一个容器v,并且不给他预定存储空间. 运行: vector<int> v;cout << v.size(); 输出为: 0 二 ...
- 抖音蓝V如何认证,蓝V号与普通号的区别?
抖音蓝V如何认证,蓝V号与普通号的区别? 先说说抖音蓝V号和普通号的区别,两者之间最大的区别就是:抖音蓝V比普通号拥有更多的商业功能特权,更具有商业价值. 抖音蓝V有哪些功能特权呢? 1.外观功能 ( ...
- docker运行redis:windows环境运行挂载目录的正确写法、-v挂载data目录、-v挂载redis.conf配置文件以及设置访问密码
docker run -itd --name redis -v //f/DATA/docker-data/redis:/data -v //f/DATA/docker-data/redis:/etc/ ...
- oracle v rman status,RMAN 中V$ARCHIVED_LOG 中STATUS 为X 的文件处理
记录一下[@more@] 今天发现RMAN 中V$ARCHIVED_LOG 中STATUS 为"X" 的文件,想起是因为手动删掉错几个日志造成的,通过如下的方法把RMAN 中的记录 ...
- 要怎样申请抖音蓝V认证?详谈蓝V认证的步骤
抖音现在是国内非常火的短视频软件,随着用户量的与日俱增,很多商家抓住了商机,开始在抖音宣传自己的商品.而抖音蓝V认证则是快速提升企业品牌知名度的一种渠道,但很多朋友不知道怎么申请蓝V认证,今天就给大家 ...
- 025 导数的四则求导法则之u+v、uv、u/v求导
025 导数的四则求导法则之u+v及uv u/v求导
- 自媒体运营之:微博认证怎么弄黄v?(个人橙v认证)
今天跟大家聊一下自媒体运营中关于微博的黄V认证怎么做的问题,微博的用户量很大并且用户活跃度也很高,大家平时也会发现很多热门话题都是从微博火起来的,那么对于我们自媒体运营来说,怎么样去做好微博的运营呢? ...
- 商业 v. s. 自由 ——W*ndows v. s. 现代UNIX
导读 "天下没有免费的午餐." 这句话只说对了一半.对于软件业,或者更准确一点,自由软件业,这并不一直是对的. 商业软件公司正在控制着我们--普通计算机用户甚至专业的程序员--的大 ...
- 学习笔记 -- 四元数:$v‘= qvq^{-1}$,证明v‘为虚四元数
最新文章
- PHP学习方向-进阶(二)
- 080_html5 Canvas和SVG
- 我的算法学习(一)----数组的全排列
- Mac升级自带ruby方法
- 解决toolbar左边空出一部分的问题
- Tensor的索引与切片
- 日立hgp电梯mcub03主板原理图
- matlab里面的取整函数
- 底量超顶量超级大黑马指标源码_清华女教授忠言:只要出现“底量超顶量”走势,后期必有暴走趋势...
- SQL省市区三级表 脚本
- 看风云变幻,自云淡风轻
- 安装卸载Xftp时,遇到的1605和1628问题
- 华为服务器进入系统怎么退出安全模式,华为手机怎么进入和退出安全模式?华为手机进入安全模式按哪个键...
- MPU6050的dmp代码移植的过程--转
- 最新火狐手机浏览器如何通过firefox修改UA
- js打印pdf 使用Adobe reader 打印pdf
- 软件比人可靠——错误管理软件TestDirector
- Day37.数据库的几个重要概念
- java 16进制工具
- 剑与远征服务器维护,剑与远征:海岛版本入坑须知注意点,少走弯路!
热门文章
- 小说分销运营赚不赚钱就在这3个问题了!
- Ubuntu安装360浏览器
- uc浏览器电脑版官方版
- Oracle项目管理系统之质量监督检查管理
- 涿州蓝天计算机学校,涿州职教中心计算机专业高考班人才培养方案.doc
- matlab 图像的灰度值翻转
- 论文笔记-VulDeeLocator: A Deep Learning-based Fine-grained Vulnerability Detector
- statement和preparedment的区别
- python实现网页微信登陆_django 微信网页授权登陆的实现
- bp神经网络是用来干嘛的,神经网络bp是什么意思