如果/ else总是转到else语句

时间:2016-10-23 20:11:00

标签: c++ if-statement

我正在尝试根据用户输入的金额制作一个确定佣金的功能。它需要用户输入double并使用它来确定它所使用的方程式。但是我写的代码总是转到else语句,我不确定我的条件有什么问题。

double calculate(double s)
{
    double c;
    if (s > 300,000)
    {
        c = 25,000 + (0.15 * (s-300,000));
        cout << "went to if" << endl;
        return c;

    }

    else if (300,000 > s && s > 100,000)
    {
        c = 5,000 + (0.10 * (s-100,000));
        cout << "went to else if" << endl;
        return c;

    }

    else
    {
        c = 0.05 * s;
        cout << "went to else" << endl;
        return c;

    }
} 

3 个答案:

答案 0 :(得分:25)

s > 300,000逗号表达式,相当于(s > 300),000。逗号表达式的值是列表中最后一个的值,此处为000。转换为false后评估为bool

您可以将其写为

if( s > 300'000 )

或者,如果编译器不支持新奇的表示法,只需

if( s > 300000 )

或者你可以定义

double const k = 1000;

并写

if( s > 300*k )

同样适用于25 000,10万和5000文字。

答案 1 :(得分:18)

中的数字300,000是什么意思
if (s > 300,000)
事实上,

是对,-operator的一种奇怪使用,它被解析为

if ((s > 300),(000))

并始终以false结果。相反,尝试

if (s > 300000)

(同上else if (300,000 > s && s > 100,000)和其他几个地方。)

答案 2 :(得分:4)

300,000不是正确的double字面值,但应用逗号运算符,最后得到值0

使用.用于双重文字:300.000或不使用数千名分隔符:300000