首页 > 其他 > 详细

杭电2057

时间:2019-06-29 15:56:11      阅读:177      评论:0      收藏:0      [点我收藏+]

技术分享图片

题目大意是输入两个带正负号的十六进制数,再以十六进制输出其和

本以为是一道水题,直接用%x进行运算就行,但是后面出现了许多问题

首先是%x输出负数时会出现ffff的代码,后面查了一下发现大致是转码方面的问题,所以想要输出题目里的结果,就必须要把负数处理一下

然后后面有几次wrong answer是数据类型的问题(和某四渠注水问题尿性类似),所以将输入数据改为了long long,但是这个时候%x出问题了,后面经过查询了解到%x只能对应int类型,而要对应64位的long long类型,%x要改写为%I64x

#include<stdio.h>

int main(void){
    long long a, b, sum;
    while( scanf("%I64X%I64X", &a, &b)!=EOF ){
        sum=0;
        sum = a+b;
        if(sum < 0){
            sum *= -1;
            printf("-%I64X\n", sum);
        }else{
            printf("%I64X\n", sum);    
        }
    }
    return 0;
}

 

 

杭电2057

原文:https://www.cnblogs.com/ssNiper/p/11106607.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!