-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.为什么?
使用后增量时,在计算表达式后,该值将递增.这意味着首先它将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你收到的价值.