C++Primer第五版第六章练习6.48

/*
练习6.48:
说明下面这个循环的含义,它对assert的使用合理吗?
string s;
while(cin>>s && s!=sought) { }//空函数体
assert(cin);
答:
含义:当输入文件结束符或者输入目标字符串时,终止循环, 执行assert语句。
如果输入文件结束符,cin为假,assert输出信息并终止程序的执行。
如果输入目标字符串,cin为真,assert什么也不做。
assert宏常用于检查“不能发生”的条件。
此处用assert(cin)的目的:如果cin不为sought,本不应该执行到assert语句。但是执行到了assert语句,此时需要assert输出信息并终止程序的执行。但是只要是有效输入,assert的表达式一直为真,什么也不做。这是没有意义的。起不到检查“不能发生”的条件的目的。
应改为:assert(s==sought);
*/
#include "TouWenJian_6.h"

int main(int argc, char *argv[])
{
//	for(int i=1;i>s && s!=sought) { }//空函数体
//	assert(cin);
	assert(s==sought);
	return 0;
}














你可能感兴趣的:(c++)