有亿个疑问?
  • 板块学术版
  • 楼主strcmp
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/2/13 21:25
  • 上次更新2023/10/28 08:36:57
查看原帖
有亿个疑问?
551861
strcmp楼主2022/2/13 21:25
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上能正常运行?

2022/2/13 21:25
加载中...