C语言题目002

来源:百度知道 编辑:UC知道 时间:2024/06/07 03:40:48
test.h 文件如下:
#define LAG >
#define SMA <
#define EQ ==

主文件如下:
#include "test.h" /*一个新文件50.c,包含test.h*/
#include "stdio.h"
#include "conio.h"
void main()
{
int i=10;
int j=20;
if(i LAG j)
printf("\40: %d larger than %d \n",i,j);
else if(i EQ j)
printf("\40: %d equal to %d \n",i,j);
else if(i SMA j)
printf("\40:%d smaller than %d \n",i,j);
else
printf("\40: No such value.\n");
getch();
}
这个程序是不是错的,如果没错,这个程序是什么意思

这个程序没有错误

#define 预处理命令是用来 定义宏 的。
在程序编译前,首先要进行预处理,其中包括宏展开,也就是将程序中的宏替代为定义的部分。

例如:在“#define LAG >”命令中, “LAG” 即为宏名,“>” 为被定义的部分
程序中只要遇到 “LAG” 则使用 “>” 将之替代,所以,经过预处理之后,
”if( i LAG j )“则被(替代)展开为:“if( i > j )”。
所以,你上面的程序经过展开之后主文件即为:

#include "test.h"
#include <stdio.h>
void main()
{
int i=10;
int j=20;

if( i > j )
printf( "\40: %d larger than %d \n", i, j );
else if( i == j )
printf( "\40: %d equal to %d \n",i , j );
else if( i < j )
printf( "\40: %d smaller than %d \n", i, j );
else
printf( "\40: No such value.\n" );

getch();
}