zoukankan      html  css  js  c++  java
  • #define

    #define LETTER 1
        
    main()
        
    {
        
    char str[20]="C Language",c;
        
    int i=0;
        
    while((c=str[i])!='\0'){
        
    i++;
        
    #if LETTER
        
    if(c>='a'&&c<='z') c=c-32;
        
    #else
        
    if(c>='A'&&c<='Z') c=c+32;
        
    #endif
        
    printf("%c",c);
        
    }
        
    }
        

        运行结果为:C LANGUAGE
        现在先定义LETTER为1,这样在预处理条件编译命令时,由于LETTER为真(非零),则对第一个if语句进行编译,运行时使小写字母变大写。如果将程序第一行改为:
        #define LETTER 0
        

        则在预处理时,对第二个if语句进行编译处理,使大写字母变成小写字母(大写字母与相应的小写字母的ASCII代码差32)。此时运行情况为:
        c language
        有人会问:不用条件编译命令而直接用if语句也能达到要求,用条件编译命令有什么好处呢?的确,此问题完全可以不用条件编译处理,但那样做目标程序长(因为所有语句都编译),而采用条件编译,可以减少被编译的语句,从而减少目标的长度。当条件编译段比较多时,目标程序长度可以大大减少。

        
    main()
        
    {
        
    char str[20]="C Language",c;
        
    int i=0;
        
    while((c=str[i])!='\0'){
        
    i++;
        
    #if LETTER
        
    if(c>='a'&&c<='z') c=c-32;
        
    #else
        
    if(c>='A'&&c<='Z') c=c+32;
        
    #endif
        
    printf("%c",c);
        
    }
        
    }
        

        运行结果为:C LANGUAGE
        现在先定义LETTER为1,这样在预处理条件编译命令时,由于LETTER为真(非零),则对第一个if语句进行编译,运行时使小写字母变大写。如果将程序第一行改为:
        #define LETTER 0
        

        则在预处理时,对第二个if语句进行编译处理,使大写字母变成小写字母(大写字母与相应的小写字母的ASCII代码差32)。此时运行情况为:
        c language
        有人会问:不用条件编译命令而直接用if语句也能达到要求,用条件编译命令有什么好处呢?的确,此问题完全可以不用条件编译处理,但那样做目标程序长(因为所有语句都编译),而采用条件编译,可以减少被编译的语句,从而减少目标的长度。当条件编译段比较多时,目标程序长度可以大大减少。

        运行结果为:C LANGUAGE
        现在先定义LETTER为1,这样在预处理条件编译命令时,由于LETTER为真(非零),则对第一个if语句进行编译,运行时使小写字母变大写。如果将程序第一行改为:
        #define LETTER 0
        

        则在预处理时,对第二个if语句进行编译处理,使大写字母变成小写字母(大写字母与相应的小写字母的ASCII代码差32)。此时运行情况为:
        c language
        有人会问:不用条件编译命令而直接用if语句也能达到要求,用条件编译命令有什么好处呢?的确,此问题完全可以不用条件编译处理,但那样做目标程序长(因为所有语句都编译),而采用条件编译,可以减少被编译的语句,从而减少目标的长度。当条件编译段比较多时,目标程序长度可以大大减少。

  • 相关阅读:
    强制ubuntu登陆用户退出
    命令行设置ubuntu 无密码自动登陆
    docker 添加普通用户权限
    CMake配置工程链接库
    配置glibc
    编译sfml
    GNOME设置快捷键
    设置jetson nano VNC
    深度学习中的基本概念——评价指标相关
    行为识别
  • 原文地址:https://www.cnblogs.com/greencolor/p/1691118.html
Copyright © 2011-2022 走看看