C++ 如何在switch语句之后向另一个变量添加变量

C++ 如何在switch语句之后向另一个变量添加变量,c++,C++,我提前表示歉意,因为对于我要问的问题,我找不到更好的措辞,所以我不妨在这里解释一下。我最近得到了《C++如何编程第九版》,我一直在练习,我在第五章。我的问题是,在我的代码中,当在while循环中向另一个变量添加total时,我遇到了麻烦。基本上我每次都会得到0,我不知道我做错了什么。有没有人愿意透露一些情况,并向我解释下一次我能做得更好?我的意思是代码本身运行良好,没有错误,但我只是在计算中遇到了麻烦 #include <iostream> #include <iomanip&

我提前表示歉意,因为对于我要问的问题,我找不到更好的措辞,所以我不妨在这里解释一下。我最近得到了《C++如何编程第九版》,我一直在练习,我在第五章。我的问题是,在我的代码中,当在while循环中向另一个变量添加total时,我遇到了麻烦。基本上我每次都会得到0,我不知道我做错了什么。有没有人愿意透露一些情况,并向我解释下一次我能做得更好?我的意思是代码本身运行良好,没有错误,但我只是在计算中遇到了麻烦

#include <iostream>
#include <iomanip>

using namespace std;

void main()
{
    int selection = 0;
    float total = 0.0;
    float lastTotal = 0.0;
    float product1 = 2.98;
    float product2 = 4.50;
    float product3 = 9.98;
    float product4 = 4.49;
    float product5 = 6.87;
    bool loop = true;

    while (loop == true)
    {
        cout << "Please make a selection from the following items and when you are done buying (-1) the products I will display your total\n" << endl;
        cout << "1: $" << product1 << endl;
        cout << "2: $" << product2 << endl;
        cout << "3: $" << product3 << endl;
        cout << "4: $" << product4 << endl;
        cout << "5: $" << product5 << endl << endl;

        total += lastTotal;

        cin >> selection;
        cout << "\n";

        switch (selection)
        {

            case 1:
                cout << "You have selected Product 1 which costs $2.98\n" << endl;
                total = product1;
                break;

            case 2:
                cout << "You have selected Product 2 which costs $4.50\n" << endl;
                total = product2;
                break;

            case 3:
                cout << "You have selected Product 3 which costs $9.98\n" << endl;
                total = product3;
                break;

            case 4:
                cout << "You have selected Product 4 which costs $4.49\n" << endl;
                total = product4;
                break;

            case 5:
                cout << "You have selected Product 5 which costs $6.87\n" << endl;
                total = product5;
                break;

            case -1:
                cout << "Thank you. Your total is: " << lastTotal << endl;
                loop = false;
                break;

            default:
                cout << "Invalid selection" << endl;            
        }       
    }
}
也作为旁注。这些警告到底是什么意思?我没有看到他们破坏我的代码,但当我运行代码时,他们会弹出,这与我有关

total = product1;
此行将总计设置为
product1
。它不会将
product1
添加到总数中

total = total+value
像往常一样,计算机完全按照您告诉它的操作,并使用
product1
的值覆盖
total
。产品2、3、4和5也会发生类似的情况

此行将总计设置为
product1
。它不会将
product1
添加到总数中

total = total+value

像往常一样,计算机完全按照您告诉它的操作,并使用
product1
的值覆盖
total
。产品2、3、4和5也会发生类似的情况。

若要向总计添加一个值,请将总和指定给总计

total = total+value
标准规定主函数应该返回int

int main()

若要向总计添加值,请将总和指定给总计

total = total+value
标准规定主函数应该返回int

int main()

您不需要使用lastTotal和total。仅仅使用total就可以了。lastTotal从未分配或更改

cout << "Thank you. Your total is: " << lastTotal << endl;

main必须是int

您不需要使用lastTotal和total。仅仅使用total就可以了。lastTotal从未分配或更改

cout << "Thank you. Your total is: " << lastTotal << endl;

main必须是int

这是您应该使用调试器的地方。您应该对程序终止感兴趣。代码中的哪些行会导致程序终止?你为什么要走到那条线?@dodexahedron嘿。这是另一件事,是我有麻烦的调试器。我将断点放在while循环的开头,然后单击debug和run。我注意到,total确实保存在switch语句中,但只要我想将total保存到另一个变量中,它就只输出0,我不确定为什么要警告C4305:“初始化”:从“double”截断为“float”,我每次运行时都会收到4次警告,但目前我并不担心,这是另一个需要担心的问题。对于浮点警告,文本浮点(
1.0
2.98
,等等)是类型
double
。如果您想要
float
literals.Bah,请在末尾钉上一个
f
2.98f
。我希望人们没有给出答案,但是是的-问题是您根本没有设置要输出的值。这是您应该使用调试器的地方。您应该对程序终止感兴趣。代码中的哪些行会导致程序终止?你为什么要走到那条线?@dodexahedron嘿。这是另一件事,是我有麻烦的调试器。我将断点放在while循环的开头,然后单击debug和run。我注意到,total确实保存在switch语句中,但只要我想将total保存到另一个变量中,它就只输出0,我不确定为什么要警告C4305:“初始化”:从“double”截断为“float”,我每次运行时都会收到4次警告,但目前我并不担心,这是另一个需要担心的问题。对于浮点警告,文本浮点(
1.0
2.98
,等等)是类型
double
。如果您想要
float
literals.Bah,请在末尾钉上一个
f
2.98f
。我希望人们没有给出答案,但是是的-问题是你根本没有设置你想要输出的值。非常感谢。我不知道为什么我在这个问题上被难住了这么久,而答案就在那里。你看,我已经做了大约两个小时了,只是尝试了不同的东西。我用这个作为最后的手段,所以非常感谢你的快速回复。我不知道为什么我在这个问题上被难住了这么久,而答案就在那里。你看,我已经做了大约两个小时了,只是尝试了不同的东西。我用这作为最后手段,所以谢谢你的快速回复