使用 if 语句时出错

Error while using if statements

本文关键字:出错 语句 if 使用      更新时间:2023-10-16
#include "stdafx.h"
#include <iostream> 

bool primeNumber( int x )
{
    return (x==2,3,5,7) ;
}
int _tmain(int argc, _TCHAR* argv[])
{
    using namespace std ;
    cout << "ENTER ONE DIGIT NUMBER - " ;
    int x ;
    cin >> x ;
    if ( primeNumber )
        cout << x  << " IS A PRIME NUMBER " <<endl;
    else
        cout << x << " IS NOT A PRIME NUMBER " << endl;
    return 0;
}

请帮助我..每次结果都相同,即"x"是质数..还建议更改...我只是一个初学者,所以也建议改进我的代码的方法

试试这个:

if ( primeNumber(x) )

而不是

if ( primeNumber )

并更改您的退货声明,例如

return x == 2 || x == 3 || x == 5 || x == 7;

如果要比较值。

return (x==2,3,5,7)

这不会像您认为的那样,逗号分隔的表达式返回列表中最后一个表达式的值,您primeNumber方法基本上总是返回计算结果为 true7

您必须将值与每个值进行比较,例如:

return x == 2 || x == 3 || x == 5 || x == 7;

此外,正如 Rahul 指出的那样,您不是在调用该方法,而只是将指向函数的指针进行比较 primeNumber 与 0 不同,这很true

此函数始终返回true

bool primeNumber( int x )
{
    return (x==2,3,5,7) ;
}

因为在 return 语句中使用了逗号运算符,其值为 7,与 0 不同。

我想你的意思是以下几点

bool primeNumber( int x )
{
    return ( x == 2 || x == 3 || x == 5 || x == 7 );
}

还有 if 语句中的条件

if ( primeNumber )

计算也始终为 true,因为 primeNumber 是不同于 0 的有效函数指针。

你必须写

if ( primeNumber( x ) )

至于我,那么我会这样写

if ( primeNumber( x % 10 ) )

因为没有什么可以阻止用户输入包含多个数字的数字。

函数可以通过以下方式定义

bool primeNumber( unsigned int x )
{
    bool prime = ( x == 2 ) || ( x % 2 != 0 && x != 1 );
    for ( unsigned int i = 3; prime && i * i <= x; i += 2 )
    {
        prime = x % i != 0;
    }
    return prime;
}