java懂的人请进

来源:百度知道 编辑:UC知道 时间:2024/05/21 08:28:30
int m=20;
void f(int n)
{n=12/n;
m=m/2;
}
main()
{int n=3;
f(n);
printf("m=%d,n=%d\n",m,n);
}
这里输出的是什么值
告诉我原因!!!!

m = 10 n = 3

n是局部变量,作为参数传递的时候是值传递,不是那种和C++一样的引用传递,所以在方法f()里面对n的值改变不会对主函数main()的n有影响

m 是 成员变量,在整个函数中都具有作用域,所以在方法f()里改变值的时候,同样在主函数里使用时是改变后的值

我认为
m=10,n=4
n虽然是局部变量 但在上面依旧调用了函数
如果你运行了程序 可以看看输出的结果
我没有办法运行程序啊

这是C语言,不是JAVA。。。
你这样写进JAVA 肯定不能运行的
在JAVA中,这个结果是10 ,3
public class test {
static int m=20;
void f(int n)
{
n=12/n;
m=m/2;
}
public static void main(String[] args)
{
int n=3;
new test().f(n);
System.out.println(m+""+n);
}

}

m=10,n=3
m是一个全局变量

在f(int n)方法中m使用的是自身的值进行计算,m进行计算之后又将所得的值赋给自己,所以m=10

n只是f(int n)方法中的参数的值改变了,但是在main方法中的n并不会因为参数的改变而改变,所以n=3

这个是c的程序,怎么问 java相关 哟?

m=10,n=4

m=20,n=3,调用函数f(3) 一次,改变了n与m的值。