我用 C++ 和 C# 编写了以下代码
int i=0;
++i = 11;
此 C# 编译器出现错误后
The left-hand side of an assignment must be a variable, property or indexer
但是 C++ 编译器生成此代码没有错误,我得到了结果11
对于价值i
。造成这种差异的原因是什么?
不同之处在于预自增运算符是lvalue在 C++ 中,而不是在 C# 中。
In C++ ++i
返回对递增变量的引用。在 C# 中++i
返回变量 i 的增量值。
所以在这种情况下++i
is lvalue在 C++ 中和rvalue in C#.
来自关于前缀增量运算符的 C++ 规范
操作数的类型应为算术类型或指向
完全定义的对象类型。该值是新的值
操作数;它是一个lvalue.
P.S.后缀增量运算符 i++ 在 C# 和 C++ 中都不是左值,因此这行代码在两种语言中都会带来错误。
int i=0;
i++ = 11;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)