主题:新手问题
伊格利斯
[专家分:0] 发布于 2008-04-08 14:13:00
#define f(x,y) x*y
main()
{int a=3,b=4;
printf("%d",f(a++,b++)};
}
请问结果是(a+1)*(b+1)还是a*b
各位,我快考二级了,请快点回答[em2][em2][em2][em2]
回复列表 (共5个回复)
沙发
zhongjiongsheng [专家分:20] 发布于 2008-04-08 23:17:00
我也是刚刚学c语言的
你这个问题 我也不知道
不过 我觉得 应该是a*b
因为我觉得f(a++,b++)是先执行了a和b的代入x和y
再自增的
不对之处 望原谅阿
板凳
pangziguo [专家分:70] 发布于 2008-04-09 02:37:00
结果是a*b
这是个自加运算的问题,举个例子
i++是先进行运算,然后再加1
而++i则是先自加,加1以后再进行运算
例如:
int i=1,j;
如果j=i++;则先进行赋值运算,然后再自加
结果j是1
如果j=++i;则先进行自加运算,然后再赋值
结果j是2
3 楼
happyboy2007 [专家分:3900] 发布于 2008-04-09 12:06:00
我对C语言不是很了解,但我觉得是 a*b
4 楼
wangxsw [专家分:20] 发布于 2008-04-09 20:51:00
我觉得是a*b,出现了printf,a++和b++遵从先自加一再输出
5 楼
long554 [专家分:130] 发布于 2008-04-09 23:53:00
这个问题其实你自己就可以找到答案啊,你在编译后用调试不就得到问题的答案了吗?
调试的话你可以逐步看到运行的过程..
我来回复