C++ if/else confusion
C++ if/else confusion
这是我的代码,用于检查numOfAcc(变量(是否小于10或等于0。然后继续使用我提供的代码(如果是真的(。
void customer::add_account()
{
int selec;
for(int i=0; i<10; i++)
{
if(numOfAcc<10 || numOfAcc == 0)
{
cout << "nnTo enter new account for this customer enter 1";
cout << "nTo go back please enter 0" << endl;
cin >> selec;
switch(selec)
{
case 0:
officer_func();
break;
case 1:
bankAccount acc;
acc.getAccountDetails();
accs[numOfAcc]=acc;
numOfAcc++;
break;
//b.getAccountDetails(); c.numOfAcc++; break;
}
}
else
{
cout<<"MAXIMUM ACCOUNTS LIMIT REACHED"<<endl;
cout << c.numOfAcc; //test code to check the value of numOfAcc which returns as ZERO
}
}
getch();
}
我之前在另一个函数中将numOfAcc成员(属于一个类(初始化为ZERO。但在运行模式下,它总是以else语句"MAXIMUM ACCOUNTS LIMIT REACHED"结束。
我用cout语句检查了numOfAcc成员是否为零,它返回为零。if/else语句有问题
我的代码出了什么问题?
首先,在if (numOfAcc<10 || numOfAcc == 0)
中不需要第二部分,因为如果numOfAcc为0,它将已经<10.
第二,如果你确定numOfAcc是0,并且你的"if"语句有问题,因为你输入的"else"值是0 nomOfAcc,你可以写以下内容:
if (numOfAcc<10 || numOfAcc == 0)
{
...
}
else
{
assert(numOfAcc != 0); // assert what "should be true"
cout << ...
}
然后运行代码的调试构建。这两件事中的一件会发生:
- 如果断言失败:您是对的。在某个时刻,您可以输入numOfAcc==0的else分支。你在问题中说的是真的
- 如果断言没有失败:您错了。您永远不会进入numOfAcc==0的else分支。你在问题中说的是错的
请注意,在这两种可能的结果中,第一种是不可能的。
当你做这个测试时会发生什么?
您的代码中存在短路问题(正如@MikeSeymour所说,到目前为止,这不会导致任何问题,但需要在受伤之前解决(
if(numOfAcc<10 || numOfAcc == 0)
仅当numOfAcc <10
时才评估numOfAcc == 0
,即仅当第一个条件为假时才评估第二个条件。否则,if
-条件为真,并且由于true || false == true
,不需要评估第二个条件,因此对第二个情况的评估无关紧要。
因此,您应该进行单独的检查,因为如果一个数字是0,它总是小于10,因此条件将始终为true。
此链接可能对您有用--http://en.wikipedia.org/wiki/Short-circuit_evaluation
在你的其他部分,你有c.numOfAcc
,但在支票中,你使用numOfAcc
。为什么不一致?可能您应该使用if(c.numOfAcc<10 || c.numOfAcc == 0)
if (numOfAcc == 0)
{
}
else
{
cout << c.numOfAcc;
}
这只能打印零,因为numOfAcc
和c.numOfAcc
是两个不同的东西。
if...else
语句没有任何错误。
你的代码还有其他问题,其他答案已经解释过了。
- 我的简单if-else语句是如何无法访问的代码
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- 如何删除peer if else分支中的冗长句子
- Confusion: decltype vs std::function
- 我似乎对if/else的基本语句有问题:/
- 使用if-else将数字转换为单词
- c++ std::enable_if .... else?
- 如果 else 语句不断循环
- 为什么这个案例陈述需要一个"if else"而不仅仅是一个"if"?
- C++ If/Else 语句被跳过
- 为什么我的最后一个 ELSE 条件无法正确执行
- 如果条件不相关,我应该更喜欢两个 if 语句而不是 if-else 语句吗?
- 如何将 if else 语句重写为 switch 语句
- 在 C++ 中的 if-else if- else 语句期间更改变量
- 为什么我的 if else 语句不起作用并从数组中输出正确的索引?
- 我的 If Else 语句无法在向量 (C++) 中提供最大值
- 具有嵌套 if-else 的循环的时间复杂度
- 如果 else 语句使用大写和小写字母
- 如何改进一堆在已知值范围内评估变量的 else-if 条件?
- C++ if/else confusion