c=c-32; #else if(c>='A'&&c<='Z c=c+32; #endif printf("oc",c方 } 运行结果:
c=c-32; #else if(c>='A' && c<='Z') c=c+32; #endif printf("%c", c); } } 运行结果:
C LANGUAGE 现在先定义LETTER为1,这样在对条件编译命令进行预处 理时,由于LETTER为真(非零),则对第一个i语句进 行编译,运行时使小写字母变大写。如果将程序第一行改 为 #define LETTER 0 则在预处理时,对第二个语句进行编译处理,使大写字母 变成小写字母(大写字母与相应的小写字母的ASCIⅡ代码 差32)。此时运行情况为 c language
C LANGUAGE 现在先定义LETTER为1,这样在对条件编译命令进行预处 理时,由于LETTER为真(非零),则对第一个if语句进 行编译,运行时使小写字母变大写。如果将程序第一行改 为 #define LETTER 0 则在预处理时,对第二个if语句进行编译处理,使大写字母 变成小写字母(大写字母与相应的小写字母的ASCII代码 差32)。此时运行情况为 c language
8.2.3知识归纳 条件编译命有以下几种形式: (1)#ifdef标识符 程序段1 #else 程序段2 #endif 作用是当所指定的标识符已经被#define命令定义过,则在 程序编译段只编译程序段1,否则编译程序段2。其中#else
8.2.3 知识归纳 条件编译命有以下几种形式: (1)# ifdef 标识符 程序段1 #else 程序段2 #endif 作用是当所指定的标识符已经被#define 命令定义过,则在 程序编译段只编译程序段1,否则编译程序段2。其中#else
部分可以没有,即 #fdef标识符 程序段1 endif 这里的“程序段”可以是语句组,也可以是命令行。 例如,在调试程序中插入以下的条件编译段 #ifdef DEBUG printf("x=%od,y=%od,z=%od\n",x,y,z); #endif
部分可以没有,即 # ifdef 标识符 程序段1 # endif 这里的“程序段”可以是语句组,也可以是命令行。 例如,在调试程序中插入以下的条件编译段: #ifdef DEBUG printf("x=%d,y=%d,z=%d\n",x,y,z); #endif
如果在它的前面有以下命令行: #define DEBUG 则在程序运行时输出x,y,z的值,以便调试分析。调试完 成后只需将这个#define命令行删去即可,有人可能觉得 不用条件编译也可达此目的,即在调试时加一批printfi语 句,调试后一一将printfi语句删去。的确,这是可以的。 但是,当调试时加的printf语句比较多时,修改的工作量 是很大的。用条件编译,则不必一一删改pi血tf语句,只 需删除前面的一条“#define DEBUG”命令即可,这时所 有用DEBUG作标识符的条件编译段都使其中的printfi语句
如果在它的前面有以下命令行: #define DEBUG 则在程序运行时输出x,y,z的值,以便调试分析。调试完 成后只需将这个#define命令行删去即可,有人可能觉得 不用条件编译也可达此目的,即在调试时加一批printf语 句,调试后一一将printf语句删去。的确,这是可以的。 但是,当调试时加的printf语句比较多时,修改的工作量 是很大的。用条件编译,则不必一一删改printf 语句,只 需删除前面的一条“#define DEBUG”命令即可,这时所 有用DEBUG作标识符的条件编译段都使其中的printf语句