02还是002,这个是看系统,其实大小是一样的,一般C编译比如VC++里面,如果没有指定数据所占宽度,那么数字小数部分占6位,指数部分占5位(如e+002,这些字符1个占1位,共5位),而题目中已经定义了宽度,小数部分占2位,而那个6应该至少为8,可能不同的系统有所差异。
所以,这个题目主要就是考的e格式符的输出特点:小数点前必须只有一位数,然后小数是2位,格式为X.xxe+xx的这种形式。至于楼主纠结的,是02还是2还是002,这个区别不是太大。
这个程序没有错误#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()
}
相信宏展开后的应该是很容易理解的了吧,就是一个简单的比较大小。