我正在尝试学习如何在c中使用GNU GMP库,我编写了这个程序,以了解mpz_t mpq_numref( mpq_t N)
和mpz_t mpq_denref( mpq_t N)
的工作原理。我收到错误,并且我不知道应该如何修改代码以使其正常工作。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <gmp.h>
int main()
{
mpq_t u, v;
mpz_t a,b,c;
mpz_init(a);
mpz_init(b);
mpq_init( u );
mpq_init( v );
mpq_set_si( u, -6 ,2);
mpq_canonicalize( u );
a= mpq_numref( u );
b= mpq_denref( u );
gmp_printf( "u =%Zd/%Zd\n", a,b );
return 0;
}
我得到的错误是:
error: incompatible types when assigning to type ‘mpz_t’ from type ‘struct __mpz_struct *’
a= mpq_numref( u );
^
7.c:21:8: error: incompatible types when assigning to type ‘mpz_t’ from type ‘struct __mpz_struct *’
b= mpq_denref( u );
^
非常感谢您的帮助
答案 0 :(得分:0)
仔细阅读错误消息将为您提供答案。 mpq_numref
和mpq_denref
函数都返回指向__mpz_struct
类型的指针 - &gt; struct __mpz_struct *
。
注意函数和数据类型的类型签名,类型T
及其对应的指针类型T *
之间不存在隐式转换。
答案 1 :(得分:0)
感谢M.M的评论,代码应该如此修改,并且有效。
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
self.textView.setContentOffset(CGPoint.zero, animated: false)
}