首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从结构中打印int128值

从结构中打印int128值
EN

Stack Overflow用户
提问于 2021-03-27 00:44:13
回答 1查看 112关注 0票数 0

我有一个由2个64位整数组成的元组( int128 ):

代码语言:javascript
复制
struct int128 {

    uint64_t    left;
    int64_t     right;
};

我知道如何做乘法、加法和减法等基本算术,但我不知道如何用C打印当前有符号的值。

有人能告诉我怎么做吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-29 18:54:37

假设您具有以下功能:

代码语言:javascript
复制
int64_t divideRem(struct int128 *number, int64_t divisor);

它将数字/除数除法,将除法结果设置为number,并返回除法的其余部分。

您可以使用递归实现:

代码语言:javascript
复制
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);
}

您的主要打印函数应该复制数字以避免修改,并检查底片:

代码语言:javascript
复制
printInt128(struct int128 *number) {
  struct int128 copy = *number;
  if( cmpInt128(&copy, 0) < 0 ) {  /* number is negative */
    printf("-");
    becomePositive(&copy); /* copy = abs (number ) */
  }
  printInt128rec(&copy);
}

现在你可以打电话给printInt128打印你的号码了。注意,我使用了几个在int128整数和int64之间操作的其他函数。如果你知道如何做128位的算术,这些应该更容易实现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66825998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档