typedef long long int ll;
inline const ll& lowbit(const ll& x){
return x&(-x);
}
上述lowbit函数在VS2020上运行,没有报错和警告,并能正常运行,然鹅在在线IDE上会RE。
可以看出来,因为x&(-x)返回了一个将亡值,const ll&则引用了这个将亡值,导致返回值是一个不存在的,因此会导致RE。
可是为什么这个函数在VS2020上能正常运行?
还有其他的,比如:
ios::sync_with_stdio(false);
//下面cin/cout和scanf,printf,puts...混用
这是本人在做 P1619 解一元二次方程的烦恼 时的现象。VS2020能够按正常顺序输出,可在在线IDE上出祸了(输出顺序不正常),能看出来,引用了ios::sync_with_stdio(false)后,cin/cout与C库IO函数的同步被取消了,会导致文件指针混乱。可问题是VS上还是运行得好好的,本人还因为此事发过贴,还因为此代码被一神犇喷了(虽然最后A了)。
我在写单调队列的模板题时,因为加了ios::sync_with_stdio(false)导致putchar('\n')不能正常输出而报灵,删去后就A了。可VS上完全没问题。
疑问:话说为什么在线IDE上错误的代码,在VS上能正常运行?