急!!c++中的循环结构,if(n)是什么意思啊?()里面不是应该是一个判断语句吗?

#include <iostream.h>
void printN(int n)
{ if(n)
{ printN(n-1);
cout << n << ends ;
}
}
void print(int w)
{ if( w )
{ print( w-1 );
printN(w);
cout << endl;
}
}
void main()
{ print( 5 ); }

输出结果:
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
这程序是怎么运行的?

第1个回答  2009-01-10
#include <iostream.h>
void printN(int n)
{ if(n) //如果n是一个不等于0的数就为真,就运行if语句。
{ printN(n-1); //这是一个递归函数。
cout << n << ends ;
}
}
void print(int w)
{ if( w ) //同上。
{ print( w-1 ); //同上
printN(w);
cout << endl;
}
}
void main()
{ print( 5 ); }//调用函数。本回答被提问者采纳
第2个回答  2009-01-10
在C语言中,零就是假,非零就是真。一般的判断语句其实也是有返回值的,成立就是1,不成立就是0,你可以用printf("%d",3==6);这个语句试一下,执行这个语句时会输出0的。
@awuowen:“cout << endl”的作用是输出一个换行符,和cout<<"\n"等价。
第3个回答  2009-01-10
if(n) -- n 为 0 或 非 0 ,就是 真假。
(有的编译器, n 为 1 或 非 1 ,就是 真假。)

不一定是 “条件判断式”。
第4个回答  2009-01-10
if(n)
相当于:if(n != 0)
第5个回答  2009-01-10
n就是一个判断语句
n=非零时执行 n=0是跳出
不过题目的“cout << endl”不懂什么意思