C 从结构打印int128值
我有一个int128,它是由2个64位整数组成的元组:C 从结构打印int128值,c,C,我有一个int128,它是由2个64位整数组成的元组: struct int128 { uint64_t left; int64_t right; }; 我知道如何做乘法、加法和减法等基本算术,但我不知道如何用C打印当前有符号值 有人能告诉我怎么做吗?假设您有以下功能: int64_t divideRem(struct int128 *number, int64_t divisor); 对数字/除数进行除法,将除法结果设置为number,并返回除法的剩余部分
struct int128 {
uint64_t left;
int64_t right;
};
我知道如何做乘法、加法和减法等基本算术,但我不知道如何用C打印当前有符号值
有人能告诉我怎么做吗?假设您有以下功能:
int64_t divideRem(struct int128 *number, int64_t divisor);
对数字/除数进行除法,将除法结果设置为number,并返回除法的剩余部分
您可以使用递归实现:
printInt128rec(struct int128 *number) {
int64_t rem;
rem = divideRem(number, 10);
if( cmpInt128(number, 0) != 0 ) { /* compares number with 0 */
printInt128rec(number);
}
printf("%d", rem);
}
您的主要打印功能应复制号码以避免修改,并检查底片:
printInt128(struct int128 *number) {
struct int128 copy = *number;
if( cmpInt128(©, 0) < 0 ) { /* number is negative */
printf("-");
becomePositive(©); /* copy = abs (number ) */
}
printInt128rec(©);
}
printInt128(结构int128*编号){
struct int128 copy=*编号;
如果(cmpInt128(©,0)<0){/*数字为负数*/
printf(“-”);
变为阳性(©);/*copy=abs(数字)*/
}
printInt128rec(复制和打印);
}
现在您可以调用printInt128打印您的号码。请注意,我使用了其他几个在int128整数和int64之间操作的函数。如果你知道如何制作128位算术,那么这些应该更容易实现。你不能用一个库来实现吗?我猜你需要编写一系列函数来实现这一点。我想学习如何做到这一点。你如何在不使用
printf()
族的情况下打印int
值?谢谢在看到你的帖子之前我也这么做了。很高兴您的解决方案确认我做了正确的事情:)-再次感谢您!