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

1 c++ assert infinite-loop

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

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

替换为:

cin >> ntc;
getline( cin, inputN ); /* extract remaining '\n' */
Run Code Online (Sandbox Code Playgroud)

在更换之前,UVA的光荣机器人法官会做出判决:

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

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

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

  1. 它以什么方式与被替换的代码相关?
  2. 有没有关于UVA机器人判断与其他编译器有何不同的文件?因此,我知道在线评判可用的功能/方法.

我用MinGW.

atz*_*tzz 5

断言无法创建无限循环.

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

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

  • @TheMadman - 实际上与`char dummy = 0;`或`char dummy ='\ 0';`相同. (2认同)