注册 登录
编程论坛 C++教室

明确的判断值

Soul寂 发布于 2008-10-24 07:40, 570 次点击
程序代码:
#include <iostream>
using namespace std;
int main()

 {int prime(int);                /* 函数原型声明 */
  int n;
  cout<<"input an integer:";
  cin>>n;
  if (prime(n))
    cout<<n<<" is a prime."<<endl;
  else
    cout<<n<<" is not a prime."<<endl;
  return 0;

 }


 int prime(int n)
  {int flag=1,i;
   for (i=2;i<n/2 && flag==1;i++)
     if (n%i==0)
       flag=0;
   return(flag);
  }

 




 if (prime(n))
为什么能这样写呢?并没有写 if (prime(n)=1)还是 if (prime(n)=0),不是条件判断吗?
那么系统是怎么知道 if (prime(n))需要判断的值的呢?然后判断的呢?

能不能说明白点呢?
3 回复
#2
gnim26002008-10-24 08:50
回复 1# Soul寂 的帖子
如果没记错的话,C/C++中,False和True可以用0和非0的整数表示。
所以if(prime(n))是可以的,因为它返回的是整数。
但是这样写并不规范。
#3
newyj2008-10-24 11:01
首先 纠正一下lz的错误 不是if (prime(n)=1) 而是 if (prime(n)==1)
因为 bool和int 可以隐性转换 这个时候 if判断函数返回值 是否为零
零为false 非零为ture
#4
lockhawk2008-10-24 14:20
if (prime(n)),是指当prime(n)是真的,就输出。if (prime(n))和if (prime(n)==1)是等价的
如果题目要求求出合数的话,就应该是if(prime(n)==0)或者if (!prime(n))
1