我在了解自己在代码中做错了什么时遇到了问题。我想做的是为三元运算符和一个do-while循环写一个条件,以识别我的变量之一是否大于1。好吧,这给了我一个我不知道如何解决的错误。最让我困惑的是我不久将举一个例子。这是我的整体代码。请记住,我是一个初学者,所以有些事情会让您畏缩或有所改进。

#include <iostream>
using namespace std;

void getInfo(int&, int&, double&);

int main() {

   int ordered, stock;
   double charges = 10.00;

   getInfo(ordered, stock, charges);

   system("pause");
   return 0;

}

void getInfo(int& ordered, int& stock, double& charges) {

   do {
       printf("Enter the amount of spools ordered, in stock, and handling charges: ");
       scanf_s("%i %i %lf", &ordered, &stock, &charges);

       printf((&ordered > 1 && &stock > 0 && &charges > 0) ? "All added!\n"
           : "You messed one up. AGAIN!\n");
   } while (&ordered > 1 && &stock > 0 && &charges > 0);

}


现在,我得到的错误特别是在三元和while条件中。这给了我一个错误,在>都订购后。现在,如果我将其设置为ordered而不是&ordered,该错误就会消失。但是,我从来没有遇到&stock&charges的错误。我不知道为什么对&ordered的处理方式有所不同。当我摘下ordered时,它也不能正确检查&,原因是我不确定。

谢谢任何愿意帮助的人!

最佳答案

...(&ordered > 1 && &stock > 0 && &charges > 0) ? "All added!\n"


在这里,“&ordered”表示“ ordered变量的地址。您显然不是在尝试比较ordered的地址,而是ordered本身。这应该是

...(ordered > 1 && stock > 0 && charges > 0) ? "All added!\n"


同样,您的while()语句也存在问题。

在C ++中,“&”表示两件事。在声明中,它用于声明引用。在表达式中,它是运算符的“地址”。

声明引用后,例如:

int &whatever;


随后,仅使用whatever引用引用的对象本身。

       : "You messed one up. AGAIN!\n");

10-01 17:46