是
--foo++;
C中的有效声明? (它会编译/运行)是否有任何实际应用?
很抱歉在编辑中更改了问题,但我发现了一些问题。
根据我的C ++编译器(Visual Studio 2010):
--++foo;
是一个有效的命令,但
foo--++;
不是。 这有什么理由吗?
不,它无效,因为增量/减量运算符的结果不是左值。
编辑: OP通过添加两个例子来编辑他的问题。 所以我们走了,出于同样的原因:
--++foo; --foo++; foo--++;
都是无效的表达式语句,因为递增/递减运算符的结果不是左值。 编译器可以扩展语言并接受这些表达式,但严格符合的程序不能包含任何这些表达式。
由于这是一个C表达式,它应该遵循一些级联评估步骤来找出结果。
你的表达是
– ++ FOO;
好吧让我们评估这第一步: –
++ FOO;
必须进行评估才能继续
它是一些预增量,所以foo变成foo + 1。
然后分配发生
这是对foo = foo + 1的评价;
和foo的值返回以赋值给变量(如果没有任何存在则被忽略)。
所以现在我们的表达如下
– (++ FOO); 评估为
– (常数值); // foo + 1的结果
再次声明评估如
常量值= constant_valu + 1; //右边部分正常但左边部分不是变量
由于赋值运算符的左侧不是变量并且引发错误。
所以现在没有 – /减量运算符的有效操作数所以左值必需的错误
以上就是c/c++开发分享你可以在c中的同一个语句中的同一个变量上有一个递增器和一个递减器相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/523278.html