一道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);
} 展开
文字版:
#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原来也没定义。应该是多少呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#ifdef
#define
等等, 它们都是在预编译的时候完成的,
就是在编译代码之前,
num3=PQ(num1,num2);代码替换为
num3= num1*num2+num1*num2,
然后编译链接运行
#define
等等, 它们都是在预编译的时候完成的,
就是在编译代码之前,
num3=PQ(num1,num2);代码替换为
num3= num1*num2+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
这个些为条件编译,
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询