转载来自:https://blog.csdn.net/HumveeA6/article/details/79806869
这种类型只有部分GCC编译器支持。经测试,正常运算与普通int无异,但是输入输出时无论是cin,cout还是printf都会报错,所以必须自己写输入输出函数。
定义时与别的数据类型并没有什么区别
eg: __int128 a,b,c;
输入暂时采用字符串读入方式。
方法一:重载输出
std::ostream& operator<<(std::ostream& os, __int128 T) { if (T<0) os<<"-";if (T>=10 ) os<<T/10;if (T<=-10) os<<(-(T/10)); return os<<( (int) (T%10) >0 ? (int) (T%10) : -(int) (T%10) ) ; }
方法二:变为字符串式输入输出
输入:
void scan(__int128 &x)//输入 { x = 0; int f = 1; char ch; if((ch = getchar()) == '-') f = -f; else x = x*10 + ch-'0'; while((ch = getchar()) >= '0' && ch <= '9') x = x*10 + ch-'0'; x *= f; }
输出:
void print(__int128 x) { if(x < 0) { x = -x; putchar(‘-‘); } if(x > 9) print(x/10); putchar(x%10 + ‘0‘); }