练习6.48

6.48:说明下面这个循环的含义,它对assert的使用合理吗?

string s;

while(cin>>s && s!=sought)  {   }  //空函数体

assert(cin);

Ans:当输入的string对象的值不为空,接着判断是否等于某个阈值,则执行循环体中的内容,最后,当调试器打开后,判断cin输入流中是否为空,若为空则输出信息并终止执行程序,但是当循环跳出后才会开始执行assert,也就是说,这时候输入流中总是空或者s==sought时,不管怎么样,程序都会输出信息,并终止执行,所以assert使用的不合理。当调试器关闭后,assert什么也不做。

原文地址:https://www.cnblogs.com/Dark-King/p/9493663.html