关于快读的一个奇怪的写法
  • 板块学术版
  • 楼主Alan_Zhao
  • 当前回复20
  • 已保存回复20
  • 发布时间2021/2/10 17:25
  • 上次更新2023/11/5 03:26:08
查看原帖
关于快读的一个奇怪的写法
225625
Alan_Zhao楼主2021/2/10 17:25

如题。中间那个 ... 运算符是个啥东西?搜了好久也没搜到。

struct buf{
	char a[1<<25],*s,*t;
	buf():s(a),t(a){
		a[fread(a,1,sizeof a,stdin)]=0;
	}
	~buf(){fwrite(a,1,t-a,stdout);}
	operator uint(){
		int x=0;
		while(*s>47)
			x=x*10+*s++-48; ++s;
		return x;
	}
	void out(uint n){
	    #define pyo(x) *t++=x
	switch(n) {
    case 1000000000 ... 2147483647:
        pyo(48+n/1000000000); n%=1000000000;
    case 100000000 ... 999999999:
        pyo(48+n/100000000); n%=100000000;
    case 10000000 ... 99999999:
        pyo(48+n/10000000); n%=10000000;
    case 1000000 ... 9999999:
        pyo(48+n/1000000); n%=1000000;
    case 100000 ... 999999:
        pyo(48+n/100000); n%=100000;
    case 10000 ... 99999:
        pyo(48+n/10000); n%=10000;
    case 1000 ... 9999:
        pyo(48+n/1000); n%=1000;
    case 100 ... 999:
        pyo(48+n/100); n%=100;
    case 10 ... 99:
        pyo(48+n/10); n%=10;
	}
	pyo(48+n);
	pyo(10);
	}
}it;
2021/2/10 17:25
加载中...