请问q的值为什么是22?正常计算不应该是6+7+8=21吗?

img

您好,++或——运算符最好不要在一行中同时使用,这有关栈的概念,很可能不同的编译器运行的结果都会不同。

这种操作应该是不符合C语言规范的,或者说在C语言规范里没有定义,属于未定义行为。针对未定义行为,编译器做出任何反应都有可能。简单来说就是你的操作太骚,闪了编译器的腰。

我在Linux环境下用gcc编译之后,给出如下信息

img