为什么测试条件没有效果

时间:2015-03-13 13:44:41

标签: c++

当用户按下Y或y时,该程序应该停止,但我的测试测试条件对代码没有影响,程序继续询问用户下一个数字。

#include<iostream.h>
#include<conio.h>
#include<math.h>

int prime(int);

void main(void)
{
    int n;
    char ch='i';

mylabel:
    cout << "\nEnter num: ";
    cin >> n;
    cout << prime(n);
    cout << "\nPress N or n to exit : ";
    if (getche() != ('N' || 'n')) {
        goto mylabel;
    }
    cout << ",,,";
}

int prime(int p)
{
    int test = 1;
    if( (p>2 && p%2==0) || p==0 || p==1 || p<0)
        return 0;
    for (int i=3 ; i<=(int(sqrt(p)))+1 ;i+=2)
    {
      if(p%i==0)
      test=0;
      break;
    }
    return test;
}

1 个答案:

答案 0 :(得分:1)

问题在于你正在采用草率的英语并逐字翻译以创建破碎的C ++。

当你说:

the character is not 'N' or 'n'

这是普通的,错误。出于同样的原因,您的C ++代码错误。您正在将getche()'N' || 'n'进行比较,该表达式将布尔值与OR应用于两个char,始终生成true

你的意思是说:

the character is neither 'N' nor 'n'
the character is not 'N' and the character is not 'n'

C ++只有后一种结构的等价物,这里是:

if (getche() != 'N' && getche() != 'n')

当然,您只想阅读一个字符,所以:

const char c = getche();
if (c != 'N' && c != 'n')