为什么不能回归((a ++)%4)

-1 c

我有一个C函数:

static uint8_t func( uint8_t a )
{
   return ( (a++) % 4 );
}
Run Code Online (Sandbox Code Playgroud)

我打电话的时候:

uint8_t b = 0;
b = func(b);
Run Code Online (Sandbox Code Playgroud)

我发现b仍然是0而不是1.为什么?

Sat*_*ish 5

使用后增量时,在计算表达式后,该值将递增.这意味着首先它将a在表达式中替换并对其进行评估,在评估完成后它将增加a.

return ( (a++) % 4 );
Run Code Online (Sandbox Code Playgroud)

在这里它将采取

return ( (0) % 4 ); // after this expression is solved 'a' becomes 1
Run Code Online (Sandbox Code Playgroud)

如果你想返回1使用预增量 -

return ( (++a) % 4 ); 
Run Code Online (Sandbox Code Playgroud)

在这种情况下,在评估表达式之前,它将递增a.

return ( (1) % 4 ); // so it will return 1.
Run Code Online (Sandbox Code Playgroud)

要么

return ((a+1)%4);
Run Code Online (Sandbox Code Playgroud)

你也可以使用上面的表达式.它不会修改a你收到的价值.