c - i=i+++++c 的输出差异;且 i=++i + c++;

标签 c increment

我不知道这是否是特定于编译器的,但是当我尝试在 DevC++ 中运行这两个表达式时

何时 i=c=b=0; i=i++ + ++c给出2i=++i + c++给出1

但是 b=i++ + ++cb=++i + ++c产生结果 1对于这两个表达式。

我确实知道,根据C标准规范,在同一表达式中将变量递增两次会导致未定义的值,但我很好奇编译器如何产生这些输出。有人可以解释一下如何以及为什么吗?

最佳答案

i+++++cc 递增(到 1),然后 0 + 1存储在i中,最后i递增,得到2

++i + c++i 递增(到 1),然后 1 + 0存储在 i 中,然后 c 递增。

这就是我理解编译器所做的事情的方式,但正如其他人所说,不要指望其他地方的这种行为。

关于c - i=i+++++c 的输出差异;且 i=++i + c++;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6482035/

相关文章:

c - 为什么 argv 可以使用自增运算符

python - 递增嵌套 Python 字典

c - 是否有在 Windows 上的 C 中使用 winhttp 的完整示例?

c 警告 : use of const variable in a constant expression is non-standard in C

mysql - Microsoft SQL重置ID自动递增

c++ - 我如何自动递增每个类对象?

C:可变增量不起作用,石头,布,剪刀

c - 我应该指望换行符是什么字符?

c - 如何使用源代码测量每个节点的 MPI 基准?

c - 关于C函数原型(prototype)和编译的问题