C ++布尔函数操作数

时间:2017-11-29 23:31:06

标签: c++ function if-statement boolean

所以我已经开始使用c ++为我的大学课程而且到目前为止一直很顺利。我遇到了一个当前问题的困境,我已经找到了基本的代码结构,我的输出只有一个问题。

我正在寻找的东西,例如;

if (bool variable = true){ 

  output

else
  alternate output

我知道这不是一个免费的调试服务场所,但它对我未来的项目也很有帮助,并且没有任何错误,它执行得很好。

我的代码:

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

using namespace std;

//function prototypes
bool calculateBox(double, double, double, double *, double *);

int main()
{
    //defining variables
    double length, width, height, volume, surfaceArea;

    cout << "Hello and welcome to the program.\nPlease enter the dimensions for the box in [cm](l w h): ";
    cin >> length >> width >> height;
    calculateBox(length, width, height, &volume, &surfaceArea);

    if (bool calculateBool = true) {
        cout << "Volume: " << volume << "cm^3" << endl << "Surface Area: " << surfaceArea << "cm^2" << endl;
    }
    else
        cout << "Error, value(s) must be greater than zero!" << endl;

    system("pause");
    return 0;
}

//functions
bool calculateBox(double length, double width, double height, double * volume, double * surfaceArea) {
    if ((length > 0) && (width > 0) && (height > 0)) {
        *surfaceArea = length * width * 6;
        *volume = length * width * height;
        return true;
    }
    else
        return false;
}

*键,如果值符合要求,则输出不显示错误消息,而是显示surfaceArea和volume的奇怪字符串。它似乎跳过了“其他”声明。

我的问题 - 我的错误是否在函数的return语句中?或者主方法中的'if'语句是否存在逻辑问题?

1 个答案:

答案 0 :(得分:1)

声明

if (bool calculateBool = true) 

bool calculateBol部分将导致名为calculateBool的局部变量被定义为bool。 = true部分意味着将=左侧的内容指定为值true。因此整个bool calculateBool = true都是正确的,因此else子句永远不会被执行。

请注意,条件中单个=的出现应始终响起可能发生不良信号的铃声。因为比较相等是==

这就是说,你可以写:

 if (calculateBox(length, width, height, &volume, &surfaceArea)) {

或者如果您稍后需要该值:

bool calculateBool = calculateBox(length, width, height, &volume, &surfaceArea);
if (calculateBool) {  // or calculateBool==true if you prefer