格式化输入输出处理16进制的问题

来源:互联网 发布:手机qq监视器软件 编辑:程序博客网 时间:2024/06/06 04:56

编程学习,代码现行。所以先来分析一段代码:

#include<stdio.h>long long a,b;int  main(){    while(scanf("%llx%llx",&a,&b)!=EOF)    {        printf(a+b<0?"-%llX\n":"%llX\n",a+b<0?-a-b:a+b);    }    return 0;}

这个代码精巧在哪里呢?首先是直接输入16进制的数字运送到两个变量地址之下,然后进行运算,最后再大写输出。可以看到的是,再格式化输出时,用到了%ll**X**的写法;
其次是在printf时进行判断,用到了三目运算符(?:),巧妙地避免了多次判断输出,使代码更加简洁。
第三是64位整型在转换为16进制输出时,是按照补码进行转换直接输出,因此如果结果为负数,应该先取相反数,然后再用%X的方法进行输出。

0 0
原创粉丝点击