#include <stdio.h>
int main(int argc,char *argv[])
{
int p = 9,c = 0;
p = p++%5;
c = p;
printf("c=%d",c);
return 0;
}
C环境下编译运行结果是:5。
class DemoMathTest
{
public static void main(String[] args)
{
int p = 9,c = 0;
p = p++%5;
c = p;
System.out.println(c);
}
}
java环境下结果是:4.
为什么?????作者: 罗利民 时间: 2012-1-4 16:04 本帖最后由 罗利民 于 2012-1-4 18:20 编辑
楼主提的问题我搜了搜,
关于java里的
int p = 9,c = 0; //栈里分配一个p,值为9;分配一个c,值为0
p = p++%5; //栈里分配一个临时地址,存放p的值,然后p++的值在临时地址;p%5里用的p是第一次分配的p,也就是9,而不是临时变量里的p值,所以,最后p = 4
c = p;