c ++ assert()如何创建无限循环?

时间:2010-10-02 10:02:04

标签: c++ assert infinite-loop

机器人评判吮吸!只有在删除以下代码块之后,我才被UVA接受:

cin >> ntc;
/* extract newline from previous read */
char dummy(0);
cin.get(dummy);
assert( '\n'==dummy );
/* newline extract completes */

替换为:

cin >> ntc;
getline( cin, inputN ); /* extract remaining '\n' */

在替换之前,UVA的光荣机器人法官将作出裁决:

  

您的提交....失败,判决超出时限

     

您的程序使用的CPU时间超过了此问题所允许的时间。这意味着您的算法速度不够快或进入无限循环

更换后程序需要0.052秒才能运行!

  1. 以何种方式与替换的代码相关?
  2. 是否有任何关于UVA机器人判断与其他编译器不同的文件?因此,我知道在线裁判可以使用哪些功能/方法。
  3. 我使用MinGW。

1 个答案:

答案 0 :(得分:5)

断言无法创建无限循环。

我的猜测是,当断言触发时,操作系统会显示一个即时调试提示(“程序中发生错误... [调试] [取消]”)。 (对不起,我现在没有运行Windows,因此无法检查实际的措辞)。由于没有人按下任何一个按钮,并且该过程在某人之前没有终止,机器人认为该程序仍在运行。

我认为这是UVA设置中的错误。必须禁用即时调试。