[C puzzle book] Preprocessor

本文通过几个具体的示例展示了如何使用宏定义进行简单的数学计算和格式化输出,包括温度转换、最大值选取等,并利用宏定义实现了字符串化操作及特殊字符的处理。
#include <stdio.h>
#define FUDGE(k) k+3.14159
#define PR(a) printf("a= %d\t",(int)(a))
#define PRINT(a) PR(a); putchar('\n')
#define PRINT2(a,b) PR(a); PRINT(b)
#define PRINT3(a,b,c) PR(a); PRINT2(b,c)
#define MAX(a,b) (a<b?b:a)


int main(void)
{
    { 
        int x=2;
        PRINT(x*FUDGE(2));
    }

    {
        int ce1;
        for(ce1=0;ce1<=100; ce1+=50)
            PRINT2(ce1, 9./5*ce1+32);
    }

    {
        int x=1 ,y =2;
        PRINT3(MAX(x++,y),x,y);
        PRINT3(MAX(x++,y),x,y);
    }
}
#include <stdio.h>
#define NEG(a)-a
#define weeks(mins) (days(mins)/7)
#define days(mins) (hours(mins)/24)
#define hours(mins) (mins/60)
#define mins(secs) (secs/60)
#define TAB(c,i,oi,t) if(c=='\t')\
        for(t=8-(i-oi-1)%8,oi=i; t; t--)\
        putchar(' ')
#define PR(a) printf(#a"=%d\t",(int)(a))
#define PRINT(a) PR(a); putchar('\n')


int main(void)
{
    {
        int x=1;
        PRINT( -NEG(x) );
    }

    {
        PRINT(weeks(10080));
        PRINT(days(mins(86400)));
    }

    {
        static char input[]="\twihch\tif?";
        char c;
        int i, oldi, temp;

        for(oldi=-1,i=0; (c=input[i])!='\0'; i++)
            if (c<' ')
                       TAB(c,i,oldi,temp);
            else 
                putchar(c);
            putchar('\n');
    }
}

转载于:https://www.cnblogs.com/abacuspix/archive/2012/08/10/2631734.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值