看鱼叔的C++快速入门,示例程序中while()和if()括号里的判断条件写法多样,求点拨!
本人算是入门水平,看了小甲鱼的《快速入门学习C++》的前四讲,发现while和if里的判断条件种类很多,不知道如何掌握。下面举几个教程里的例子:int main()
{
ofstream out;
out.open("test.txt");
if(!out)
{
cerr << "打开文件失败!"<<endl;
return 0;
}
}
int main(int argc, char *argv[])
{
FILE *in, *out;
if((in = fopen(argv,"rb"))==NULL)
{
fprintf();
}
}
上面这段代码fopen返回的为什么是指针呢?
void main()
{
int i;
while(scanf("%d", &i) == 1)
{
}
}
上面这段为什么while里又是这样了?
感觉种类好多,自己写的话如果之前没见过就不知道怎么写了。 本帖最后由 pl_014 于 2017-2-15 21:22 编辑
选择结构只有if和switch两种语句块。
循环结构有三种:while、do...while还有for。
按这个思路理一理就好了。
fopen是c库标准函数,返回值类型是FILE *,返回的是文件指针。
scanf函数返回的是有几个函数被读取成功了,放到循环里就是不断地从stdin里读取整数,直到读取出错为止。
另外,条件判断语名里尽量不要包含赋值语句、自加自减操作符、可能改变外部状态的函数,以及过于复杂的表达式等。
像
if((in = fopen(argv,"rb"))==NULL)
是一种不好的写法,在实践中应该拆成两行:
FILE *in = fopen(argv,"rb"));
if (in == NULL)
像
while(scanf("%d", &i) == 1)
应该拆成:
int ret=scanf("%d", &i);
while(ret == 1)
{
...
ret=scanf("%d", &i);
}
代码的可读性比简洁性更为重要,调试一个程序往往要比编写一个程序困难很多,如果在编写的时候就穷尽了各种奇怪的技巧,那么维护的难度也就可想而知了。 见得多了就知道了,刚开始看有疑问很正常的。关于while判断的话,就看里面的返回值就可以了。关于fopen返回值,你可以去看函数解析,至于为什么是指针,反问一句:为什么不是指针?
页:
[1]