输出结果:c language
解释:
#if LETTER
if(c>='a'&&c<='z') c=c-32;
#else
if(c>='A'&&c<='Z') c=c+32;
#endif
这段是指当LETTER的值为真(非零)时执行第一个程序段if(c>='a'&&c<='z') c=c-32;否则执行第二个程序段if(c>='A'&&c<='Z') c=c+32;
这里宏定义#define LETTER 0已将LETTER的值置为0,故执行第二个程序段,即把A到Z中的大写字母转换为小写字母(小写字母的ASCII码比大写字母的大32),其他不变,所以C Language变成了c language.
输出结果 c language
解释:因为LETTER=0,所以所有大写会变成小写,如果LETTER≠0,则所有小写变大写!
#define LETTER 0 //定义一个宏常量 LETTER
main() //主函数部分
{char str[20]="C Language",c; //字符串 赋值
int i=0; //定义一个整形变量i
while((c=str[i])!='\0') //循环语句,单独处理字符串中的每一个字符,
//直到字符串结束,'\0'是字符串结束的标志.
{i++; //循环控制.i从字符串的第一个字符开始,每处理完一个就+1,
#if LETTER //判断语句,判断LETTER的值,如果为真,则编译#else之前的语句,
//否则编译#else之后的语句.
if(c>='a'&&c<='z') c=c-32; //因为LETTER为0,所以这部分跳过,不编译.
#else
if(c>='A'&&c<='Z') c=c+32; //因为LETTER为0,所以这部分是经过编译的,所以会执行.
#endif //宏编译结束.
printf("%c",c); //输出处理后的字符串.
}
}
c lANGUAGE
这个起始就是一个大小写转换的问题
if(c>='a'&&c<='z') c=c-32;
如果他是小写 那么就转成大写
if(c>='A'&&c<='Z') c=c+32;
如果他是大写 那么就转成小写
ASCii中大小写相差32
这个程序是把大小写字母的转换