雷人的笔试题目

chikuang110 2009-09-26 03:34:16
20. 有以下程序段:(D)?
#define F(X,Y) (X)--; (Y)++ (X)*(Y);

int i, a = 3, b = 4;
for( i = 0; i<5; i++) F(a,b)
printf(“%d, %d”, a, b);
输出结果是:()
A) 3, 4 B) 3, 5
C) -2, 5 D) -2, 9

网上down的一道题目,宏定义的后面那个表达式真的看不明白啊!
我的看法:
唯一能解释的就是(Y)+ +(x)*(y) 即把第二个“+”理解为正号;
但这样的话 b最终结果是4啊!a是-2,没有答案啊?
难道是 题目有问题?
...全文
379 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
chengweiv5 2009-09-29
  • 打赏
  • 举报
回复
题目有问题
yyyapple 2009-09-29
  • 打赏
  • 举报
回复
#define F(X,Y) (X)--; (Y)++, (X)*(Y);

这样的话
for( i = 0; i <5; i++) F(a,b)
=》

for( i = 0; i <5; i++)
a--;

b++, a*b;


答案是C
userlon 2009-09-29
  • 打赏
  • 举报
回复
答案是D;
#define F(X,Y) (X)--; (Y)++ (X)*(Y); 中(Y)++后面漏了一个符号,但无所谓不影响结果。
简化之就是#define F(X,Y) (X)--; (Y)++;
因此答案就是D
forster 2009-09-29
  • 打赏
  • 举报
回复
gods knows
haigan123456 2009-09-29
  • 打赏
  • 举报
回复

//oh,my God
haigan123456 2009-09-29
  • 打赏
  • 举报
回复
何必纠缠
chikuang110 2009-09-29
  • 打赏
  • 举报
回复
它给的答案是D 不知道那个9是怎么算出来的

[Quote=引用 9 楼 milkylove 的回复:]
应该是(Y)++后面少了个逗号。
[/Quote]
tamyix 2009-09-29
  • 打赏
  • 举报
回复
出题的人够无聊的
失落的凡凡 2009-09-27
  • 打赏
  • 举报
回复
应该是(Y)++后面少了个逗号。
beingstudio 2009-09-27
  • 打赏
  • 举报
回复
题目有问题。
唯一能解释的就是(Y)+ +(x)*(y) 即把第二个“+”理解为正号;
不能这样理解
++是一个运算符
不能拆开
否则 error C2105: “++”需要左值
zgjxwl 2009-09-26
  • 打赏
  • 举报
回复
hehe
wgf42421 2009-09-26
  • 打赏
  • 举报
回复
题目有问题。
KKKKK380 2009-09-26
  • 打赏
  • 举报
回复
#define F(X,Y) (X)--; (Y)++ (X)*(Y);

宏定义错了不用加 ;
bxk253387223 2009-09-26
  • 打赏
  • 举报
回复
这根本就编不过,语法都有问题。
fallening 2009-09-26
  • 打赏
  • 举报
回复
#define F(X,Y)  (X)--; (Y)++ (X)*(Y); 
for( i = 0; i <5; i++) F(a,b)


-->
for( i = 0; i < 5; i++ ) (a)--; (b)++(a)*(b);


......
liao05050075 2009-09-26
  • 打赏
  • 举报
回复
题目有问题
mstlq 2009-09-26
  • 打赏
  • 举报
回复
确实是题目有问题……

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧