C ++ if else语句不显示正确的值

时间:2015-09-14 01:33:25

标签: c++

我应该让用户输入他们的购买价格来查找运费。我遇到的问题是,如果我输入任何高于1,000美元的价值,运费价值将始终为8美元。

#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <string>

using namespace std;

void main()
{
    double saleAmount, shipping = 0;


    cout << "Enter a purchase amount to find out your shipping charges." << endl;
    cout << "Please enter the amount of your purchase: $" << endl; cin >> saleAmount; 

    if (saleAmount > 5,000.00)
    {
        shipping = 20.00; 
    }

     else if (saleAmount > 1,000.00)
     {
        shipping = 15.00;
    }

这是它无法识别10.00美元以上的运费。如果我在控制台应用程序上输入1,500,它将始终告诉我运费是10美元。同样适用于5000美元以上的任何价值。我试图看看问题是什么,但我找不到它的生命。

    else if (saleAmount > 500.00)
    {
        shipping = 10.00;
     }
    else if (saleAmount > 250.00)
    {
        shipping = 8.00;
    }
    else
    {
        shipping = 0.00;
    }

    if (shipping == 0.00)
    {
        cout << "Error incorrect input" << endl;
    }
    else
    {
        cout << "The shipping charge on a purchase of $ " << saleAmount << " is $" << shipping << endl;
    }
}

3 个答案:

答案 0 :(得分:2)

声明

if (saleAmount > 5,000.00)

相当于:

if ( (saleAmount > 5) , 000.00)

评估为

if ( 0.000 )

因此,if语句下的代码块永远不会被执行。

正如评论中指出的那样,从数字中删除,。使用:

if (saleAmount > 5000.00)

答案 1 :(得分:2)

此代码中最严重的问题是:

 if (saleAmount > 5,000.00)
 else if (saleAmount > 1,000.00)

当我使用GCC编译程序并打开所有警告时,这些行会产生以下消息:

warning: left operand of comma operator has no effect

你明白现在的问题是什么吗?

答案 2 :(得分:2)

从5,000和1,000中移除它应该可以工作。

if (saleAmount > 5000.00)
else if (saleAmount > 1000.00)