一道C语言的变量作用域的问题。#ifdef

【请问】过程是什么?文字版:#include<stdio.h>#defineTRUE1#defineFALSE0#definePQ(x,y)x*x+y*yintnum1=... 【请问】过程是什么?

文字版:
#include<stdio.h>
#define TRUE 1
#define FALSE 0
#define PQ(x,y) x*x+y*y
int num1=1,num2,num3;
void fun1(){
int num1=1;
static int num2=2;
num3+=num1+num2++;
printf("in fun1() num1=%d,num2=%d,num3=%d\n",num1,num2,num3);
}
void main(){
num3+=(num2++)-(--num1);
printf("in main() num1=%d,num2=%d,num3=%d\n",num1,num2,num3);
num1=num2=num3=TRUE;
fun1();
num1=num2=num3=FALSE;
fun1();
#ifdef FALSE
num1=1; num2=2;
num3=PQ(num1+num2,num1-num2);
#else
num1=3; num2=4;
num3=PQ(num1,num2);
#endif
printf("in main() num1=%d,num2=%d,num3=%d\n",num1,num2,num3);
}
展开
 我来答
匿名用户
2014-12-02
展开全部
 PQ(num1 + num2, num1 - num2);
  PQ(x,y) x*x+y*y
  -》num1 + num2*num1 + num2+num1 - num2*num1 - num2=2*num1
  
  void fun1(){
   int num1=1;
   static int num2=2;
   num3+=num1+num2++;
   printf("in fun1() num1=%d,num2=%d,num3=%d\n",num1,num2,num3);
   }
   
   num1,num2局部变量。num3全局变量。
   ifndef 条件编译,编译完成后,if的另部分代码不存在了
追问
能说的具体点吗?这道题的过程。
main中的num2和3原来也没定义。应该是多少呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
青春無情
2014-12-02 · TA获得超过238个赞
知道答主
回答量:100
采纳率:0%
帮助的人:29.5万
展开全部
#ifdef
#define
等等, 它们都是在预编译的时候完成的,
就是在编译代码之前,
num3=PQ(num1,num2);代码替换为
num3= num1*num2+num1*num2,
然后编译链接运行
追问

那是先算endif之后的printf还是main中的printf,main中的num1,num2都是程序开始定义的全局变量吗?

结果是这个怎么也看不明白。

追答
#include
#define TRUE 1
#define FALSE 0
#define PQ(x,y) x*x+y*y
int num1=1,num2,num3;
void fun1(){
int num1=1;
static int num2=2;
num3+=num1+num2++;
printf("in fun1() num1=%d,num2=%d,num3=%d\n",num1,num2,num3);
}
void main(){
num3+=(num2++)-(--num1);
printf("in main() num1=%d,num2=%d,num3=%d\n",num1,num2,num3);
num1=num2=num3=TRUE;
fun1();
num1=num2=num3=FALSE;
fun1();

num1=3; num2=4;
num3= num1*num2+num1*num2;

printf("in main() num1=%d,num2=%d,num3=%d\n",num1,num2,num3);
}
最后代码就这样子了,
#ifdef FALSE
#else
#endif
这个些为条件编译,
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式