c语言这题为什么选这个

11.若有宏定义#defineMOD(x,y)x%y,则执行以下语句后的输出为Bintz,a=15,b=100;z=MOD(b,a);printf("%d\n",z++)... 11.若有宏定义#define MOD(x,y) x%y,则执行以下语句后的输出为 B
int z,a=15,b=100;
z=MOD(b,a);
printf("%d\n",z++);
A)11 B)10 C)6 D)宏定义不合法
展开
 我来答
始有人同
推荐于2018-04-10 · 超过15用户采纳过TA的回答
知道答主
回答量:66
采纳率:0%
帮助的人:40.9万
展开全部
首先,这个宏定义是合法的,排除D。
其次,看第三行,z=MOD(b,a);也就是z=100%15。计算100%15,100=15*6+10,所以z=10。从这点就可以排除C。
最后,看printf("%d\n",z++);关键在z++,使用z后才++故最后输出的z的值还是10,如果还加一行printf("%d\n",z);将是11。
眭默邛晨濡
2020-05-09 · TA获得超过3423个赞
知道大有可为答主
回答量:3051
采纳率:27%
帮助的人:228万
展开全部
d/100=2
->
2%9=2(%为取余数的意思)
->
a=2
-1
=
11111111
------------------
1&&1=1
1&&0=0
0&&0=0
------------------
11111111
&
11111111
----------
11111111
按位做
"与
"
所以-1&&-1
=1
非0都是1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hnxc2008zfg
2010-06-20 · TA获得超过167个赞
知道小有建树答主
回答量:132
采纳率:0%
帮助的人:100万
展开全部
这里宏定义的是一个取模运算,MOD(b,a)在调用后MOD(100,15),此结果为6余下10,这里取余下的部分10,即z=10,由于在printf语句中师z++,那么z的值在使用后加1,即在输出这个结果以后在将z的值加上1,但在printf输出时(及使用时)为10;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
独孤大脸猫
2010-06-20
知道答主
回答量:10
采纳率:0%
帮助的人:0
展开全部
在程序编译阶段 z=MOD(b,a)被替换为z=b%a 则算出z=10
而Z++代表先取z的值进行运算 再对z加一 也就是说你输出时z的值还没有加一 而是再你输出后加一
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一个tj
2010-06-20
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
b%a是求的b除a的余数即10,把输出部分看做y=Z++,先把z即10赋给y,再将z加1,所以输出的是y即10
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式