C语言的赋值表达式返回右值
来源:互联网 发布:slackware安装软件 编辑:程序博客网 时间:2024/05/21 11:26
C是支持连续赋值的,最近一个学弟在做编译原理实验的时候构造了这样一个测试样例:
(j=2) = j+j;
他告诉我gcc报错告诉他左边需要一个左值;而MSVC则让他编译通过了。他问我怎么看,我的直觉告诉我赋值语句的返回值应该是一个右值,然后查了一下C99标准:
An assignment operator stores a value in the object designated by the left operand. An assignment expression has the value of the left operand after the assignment, but is not an lvalue. The type of an assignment expression is the type of the left operand unless the left operand has qualified type, in which case it is the unqualified version of the type of the left operand. The side effect of updating the stored value of the left operand shall occur between the previous and the next sequence point.
所以gcc在这个地方按照标准做事了,而M$则没有,如果你向上面那样写,等价于
j=j+j;
0 0
- C语言的赋值表达式返回右值
- 为什么c语言中赋值表达式左值和右值不能调换位置
- 赋值表达式的值等于右值
- c语言赋值运算返回值
- C语言问题 赋值表达式返回值是什么 http://zhidao.baidu.com/link?url=FrmzIbFTHGAGizJ4aBU7r93lWwOTOuVh4WLMAJ3DA0wRRnqS
- C/C++__基础类型的(=)赋值表达式的返回值
- c语言:赋值运算符与赋值表达式
- C语言返回表达式的最大整数floor
- c语言算术运算表达式与赋值运算表达式的类型转换规则
- 让人吃惊的做法,给返回值赋值(C++)
- C/C++中赋值语句的返回值问题
- C/C++中赋值语句的返回值问题
- C/C++中赋值语句的返回值问题
- 赋值表达式的值
- C语言表达式和表达式的值
- 左值表达式 右值表达式(C/C++)
- 赋值语句的返回值
- c/c++赋值“=”返回值问题
- 计算字符串t在字符串s中出现的次数(KMP)
- MySQL查询语句大全
- spring面试题
- 【bzoj3529】[Sdoi2014]数表
- register_chrdev_region
- C语言的赋值表达式返回右值
- WordPress编辑文章时出现的错误
- Companies Using Lisp
- LayoutParams 类型转换异常:java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams
- mac 开发: 打开电脑内安装应用和打开mac 浏览器
- 深入了解 Struts
- 我的框架--QiCai(日志类)
- div中内嵌并排div的显示问题
- [转]HTTP 协议详解