为什么我的程序的功能没有正确发生?
Why aren't my program's functions occurring correctly?
(这是我关于堆栈溢出的第一个问题,所以如果我能更好地表达它,请告诉我。
我有一个程序,可以让您打开计算器或"数字生成器"。您可以通过在控制台中输入 C 或 N 来选择要打开的那个。代码对我来说非常复杂,因为我刚刚开始学习C++所以我无法真正确定它的任何问题。此外,我已经定义了所有显示和包含的变量。
但是,无论我在开头输入什么(即使它是无效的答案,如 Q 或 123),它都会打开计算器。
void init()
{
std::cout << "Open calculator or number generator? ( C or N ): ";
std::cin >> firstpick;
}
int main()
{
init();
if (firstpick == 'c' || 'C')
calculator();
else if (firstpick == 'n' || 'N')
numbergen();
else if (firstpick != 'c' && 'n' && 'C' && 'N')
std::cout << "ERROR: Invalid answer to init";
return 0;
}
预期的结果是允许我打开 C 或 N,并在我输入无效答案时让程序返回错误,但无论如何它总是打开 C。
firstpick == 'c' || 'C'
将始终返回true
。
firstpick == 'c'
的计算结果可能为 false
但语句的后半部分只是'C'
,作为非零值,其计算结果将true
。
将逻辑更改为if (firstpick == 'c' || firstpick == 'C')
,并遵循数字生成器逻辑的相同模式。
你的代码是
if (firstpick == 'c' || 'C' != 0)
为了获得效果,您需要做...
if (firstpick == 'c' || firstpick == 'C')
你写错了if函数。
||
逻辑 OR 将两个逻辑条件分开,其中至少一个条件应为真才能产生true
值作为结果。
在您的情况下,第一个"if"检查的条件是:
-
firstpick == 'c'
和 -
'C'
所以你的 if 会产生 true
if 1. 或 2. 或两者都是真的。
当然,正如你现在看到的 2. 总是为真,所以整体如果总是返回true
。
尝试像这样更改您的 if:
if (firstpick == 'c' || firstpick == 'C')
它应该更好地工作。
您没有定义 firstpick 是什么,因此您提供的代码无法编译。您还需要从初始化函数返回一个 char。下面的代码应该可以满足您的需求。此外,您还需要在if语句中"或"个人比较。
#include<iostream>
char init()
{
std::cout << "Open calculator or number generator? ( 1 or 2 ): ";
char option;
std::cin >> option;
return option;
}
int main()
{
int firstpick=init();
if (firstpick == 'c'|| firstpick == 'C')
std::cout<<"calculatorn";
else if (firstpick == 'n' || firstpick == 'N')
std::cout<<"Num gteneratorn";
else
std::cout << "ERROR: Invalid answer to initn";
return 0;
}
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- 为什么我的程序在for循环中k=0时返回垃圾值
- 为什么它只打印双链接列表的第一个值,而我的程序却崩溃了
- 我的程序没有从文件中读取并输入数据
- 为什么我的C++程序的程序集输出充满了 .ascii,没有汇编代码?
- 我的程序有一个保存配置文件的GUI,如何双击此配置文件以直接加载带有配置数据的GUI?
- 为什么我的程序不能显示斐波那契级数?
- 为什么我的程序在使用预留后没有加速?
- 为什么如果我添加这一行,我的程序会不断询问值
- 为什么当我输入较大的数字时,我的程序会到达文件末尾?
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 为什么我的程序在 O0 和 O2 的优化级别返回不同的结果
- 为什么我的 c++ 程序检查不是初始化的变量?
- 为什么我的程序在输入某个形状的面积的测量值后没有结束?
- 在 fork() 之后,我在我的程序中不断得到相同的 pid
- C++ - 为什么我的程序在再次调用函数后关闭?
- 我的程序将 26 个字母转换为 ascII 没有显示正确答案
- 为什么我的程序在读取/写入文件时会删除最重要的数字?
- 我需要如何更改我的程序以使用打开/关闭原则?
- 我的 c++ 程序似乎没有发现字符串和我拥有但输入使用 getline 的变量之间的比较