意味着要加倍的双打?

时间:2019-04-02 02:17:16

标签: c++ debugging double visual-studio-debugging

我正在制作一个用作计算器的c ++程序。除了除法功能外,其他所有功能都起作用,除法功能由于某种原因而增加了双精度。有人修复了吗?

我已经尝试过明确地将其翻成两半,然后将头撞在桌子上。这是我的代码的一些摘要。

#include "pch.h"
#include <iostream>
using namespace std;

void divide()
{
    //first number
    cout << "What is the numerator?";
    double firstNum = 0;
    cin >> firstNum;
    //second number
    cout << "What is the denominator?";
    double secNum = 0;
    cin >> secNum;
    //multiplying
    double answer = firstNum/(double)secNum;
    cout << "Your answer is " << answer << ".";
}

int main() 
{
    //asks for what operation user would like to use
    cout << "Do you want to add, subtract, divide, or multiply? Type [1] for add, [2] for subtract, [3] for divide, and [4] for multiply(minus the brackets).";
    double opquery = 0;
    cin >> opquery;

    // if division
    if (opquery == 3)
    {
        divide();
        return 0;
    }
}

我本来希望像4/4这样的东西等于1,但它只会返回加法运算

更新:可以在https://github.com/hoverdoge/cppcalculatorerror/blob/master/code处找到完整代码

1 个答案:

答案 0 :(得分:0)

  

实际上,您在此处共享的代码还可以,并且结果为4/4 = 1。

     

但是您在github中共享的代码有所不同。去掉   ;之后的if (opquery == 1);程序可以正常工作。

更改自:

if (opquery == 1);
    {
        add();
        return 0;
    }

收件人:

if (opquery == 1)
    {
        add();
        return 0;
    }

注意:当在if(xxx)之后添加额外的;时,无论opquery的值是什么,主要方法都会执行以下步骤:

cout << "xxx...";
int opquery = 0;
cin >> opquery;
add();
return 0;

这就是为什么会发生此问题。