C 中被误解的运算符优先级

Nim*_*mpo 0 c arithmetic-expressions operation operator-precedence

我正在做一些关于C语言中操作执行顺序的练习,我遇到了一个我不太理解的情况。

int d = 1;
int e = d--/10;     // the result of e will be 0;
Run Code Online (Sandbox Code Playgroud)

在计算“e”的值之前,我们先递减“d”,然后再进行除法。

另一方面,在“f”中,我们在递减“d”之前进行了除法!

int d = 1;
int f = 10/d--;     // the result of f will be: 10
Run Code Online (Sandbox Code Playgroud)

我的问题是:既然知道在这两种情况下“d”的减量都是后减量,为什么使用的“d”值存在差异?

Sco*_*eis 5

其实没有什么区别。它在这两种情况下都使用d=1并执行后递减。

您看到明显差异的原因是您正在进行整数除法,四舍五入到 0。即:(int)1 / (int)10 = 0

请参阅接受的答案整数除法的行为是什么?