题目大意是输入两个带正负号的十六进制数,再以十六进制输出其和
本以为是一道水题,直接用%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; }