📄 nat.c
字号:
#include <stdio.h>#include <stdlib.h>#include "mystdlib.h"#include "error.h"#include "commonInter.h"#include "myint.h"#include "nat.h"static int flag = 1;struct nat{ tyVft vft; int i; plist pplist;};struct tyVft natVft;nat newNat (int i){ if (i<0) { printf ("%d\n", i); exception ("invalid argument in file nat.c: i = "); return NULL; } if (flag) { flag--; natVft.equals = natEquals; natVft.hashCode = hashCode; natVft.toString = natToString; natVft.getPlist = natPlist; } nat n = checkedMalloc (sizeof (*n)); n->vft = &natVft; n->i = i; n->pplist = newPlist (); return n;}nat natAdd (nat n1, nat n2){ int i1 = n1->i; int i2 = n2->i; return newNat (i1+i2);}nat natSub (nat n1, nat n2){ int i1 = n1->i; int i2 = n2->i; return newNat (i1-i2);}nat natTimes (nat n1, nat n2){ int i1 = n1->i; int i2 = n2->i; return newNat (i1*i2);}int hashCode (poly n){ return ((nat)n) -> i;}plist natPlist (poly n){ return ((nat)n)->pplist;}int natToInt (nat n){ return n->i;}void natOutput (poly n){ printf ("%d", ((nat)n)->i);}int natEquals (poly n1, poly n2){ return (((nat)n1)->i == ((nat)n2)->i);}str natToString (poly n){ return intToString (((nat)n)->i);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -