fcage 发表于 2022-9-23 12:42:29

(i++) + (++i)的值的问题

#include <stdio.h>

int main() {
      int j = 3;
      printf("%d", (++j) + (j++));
      putchar('\n');
      int i = 3;
      printf("%d", (i++) + (++i));
}

对于同样的代码,我用VS计算的结果是8 8;
而在Dev C++运行计算的结果是9 8.

这是为什么呢,是因为编译器不同所以实现这个运算的,顺序不同吗?能详细解释下他的运算过程吗,尤其是那个9,是两个个都自增后才相加?

dolly_yos2 发表于 2022-9-23 13:28:59

参考这里的讨论
https://fishc.com.cn/thread-215868-1-1.html

jackz007 发表于 2022-9-23 14:13:42

本帖最后由 jackz007 于 2022-9-23 14:22 编辑

       像这种编译器不同,运行结果就会不同的现象说明 C 语言语法存在着边缘模糊地带,没有什么好解释的,如果一定要问,那就是两个编译器对相关语法的理解和实现存在差异,很难断定他们究竟是谁对谁错,况且,我们只是终极用户,也无需给他们当裁判,如果不想自寻烦恼,最明智的做法是避免写出这种容易引起歧义的语句。
页: [1]
查看完整版本: (i++) + (++i)的值的问题