所以我已经开始使用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'语句是否存在逻辑问题?
答案 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