杭电2057

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

本以为是一道水题,直接用%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;
}

 

 

转载于:https://www.cnblogs.com/ssNiper/p/11106607.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值