C#中的前后递增/递减运算符
在C#中,是否有人知道为什么以下将编译:
int i = 1; ++i; i++;
但这不会编译?
int i = 1; ++i++;
(编译器错误:增量或减量运算符的操作数必须是变量,属性或索引器。)
你在另一个的结果上运行一个操作数,增量/减量的结果是一个值 – 并且你不能对一个值使用递增/递减它必须是一个可以设置的变量。
出于同样的原因你不能说
5++;
要么
f(i)++;
函数返回值 ,而不是变量。 增量运算符也返回值,但不能应用于值。
我的猜测是++ i返回一个整数值类型,然后你尝试应用++运算符。 看到你无法写入值类型(想想0 ++,如果这有意义),编译器将发出错误。
换句话说,这些语句被解析为这个序列:
++i (i = 2, returns 2) 2++ (nothing can happen here, because you can't write a value back into '2')
我的猜测:避免这种丑陋和不必要的结构。 它还将使用2个操作(2x INC)而不是1个(1x ADD 2)。
是的,我知道……“但是我希望增加两倍,而且我是一个33.3 g33k!”
好吧,不要成为一个极客,并写一些看起来不像是无意的错误的东西,像这样:
上述就是C#学习教程:C#中的前后递增/递减运算符分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
i += 2;
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1020971.html