论坛: 编程破解 标题: C语言的问题 复制本贴地址    
作者: huangwen [huangwen]    论坛用户   登录
学习语言的宏里面我有好多问题不能解决?

#define M 2
#define N M+1
#define NM N+N/2
main()
{
  int c;
  c=NM;
  print("%d",c);
}
问c等于多少
请高手们给我一点步骤的解法好吗?
具体一点可以吗?



地主 发表时间: 06/12 10:28

回复: moonair [moonair]   论坛用户   登录
宏定义#DEFINE只能做简单的替换,所以可以写成
1: C=MN
2: C=N+N/2
3: C=M+1+M+1/2
4: C=2+1+2+1/2
5: C=5

B1层 发表时间: 06/13 15:41

回复: hehanhua [hehanhua]   论坛用户   登录
答案是不是等于呀各位高手

B2层 发表时间: 06/13 15:53

回复: jiuxy [jiuxy]   论坛用户   登录
55555555555555555555555
垃圾~~~~~

B3层 发表时间: 06/13 15:54

回复: lxpf [lxpf]   论坛用户   登录
恩 就是5~

B4层 发表时间: 06/13 18:54

回复: hybird [hybird]   论坛用户   登录
倒!

B5层 发表时间: 06/14 03:10

回复: hacker521 [hacker521]   论坛用户   登录
怎么连5都不知道呀

B6层 发表时间: 06/14 06:37

回复: xhw_73 [xhw_73]   论坛用户   登录
这个简单的问题都不懂!

B7层 发表时间: 06/14 09:51

回复: hcz [hcz]   论坛用户   登录
为什么不是等于3

B8层 发表时间: 07/01 20:16

回复: cyh811122 [cyh811122]   论坛用户   登录
这样的题直接往里带数就可以了,硬往里套!

B9层 发表时间: 07/01 20:28

回复: 286 [unique]   版主   登录
#define M 2
#define N M+1
#define NM N+N/2
main()
{
  int c;
  c=NM; //<=>N+N/2 <=> M+1+M+1/2
  print("%d",c);
}
所以
M+1+M+1/2=2*M+1+1/2=2*2+1+1/2=5+1/2
由于C是整型,所以C=5+1/2=5
如果想让结果等于3。把第二行改为:
#define N (M+1)

B10层 发表时间: 07/02 09:21

回复: hcz [hcz]   论坛用户   登录
这个我到是看的懂啊,为什么5+1/2=5呢


[此贴被 胡作非为(hcz) 在 07月03日01时56分 编辑过]

B11层 发表时间: 07/03 01:12

回复: shesh [shesh]   版主   登录
当然了.

整型转换的问题.

1/2 = 0.5

被转为整型的时候就是0了.

5 + 0 = 5;



B12层 发表时间: 07/03 09:04

回复: hcz [hcz]   论坛用户   登录
明白了

B13层 发表时间: 07/04 14:31

回复: gls [gls]   论坛用户   登录
还有在难点的题吗!?

B14层 发表时间: 07/05 11:15

回复: bailove [bailove]   论坛用户   登录
 为什么”胡作非为’会有金星啊
   真的好郁闷~!
     

B15层 发表时间: 07/05 12:29

回复: hcz [hcz]   论坛用户   登录
菜鸟就不能有金星啊

B16层 发表时间: 07/05 19:40

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号