编程学习,代码现行。所以先来分析一段代码:
#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的方法进行输出。