我不知道这是否是特定于编译器的,但是当我尝试在 DevC++ 中运行这两个表达式时
何时 i=c=b=0;
i=i++ + ++c
给出2
而i=++i + c++
给出1
但是
b=i++ + ++c
和
b=++i + ++c
产生结果 1
对于这两个表达式。
我确实知道,根据C标准规范,在同一表达式中将变量递增两次会导致未定义的值,但我很好奇编译器如何产生这些输出。有人可以解释一下如何以及为什么吗?
最佳答案
i+++++c
,c
递增(到 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/