char x;
bool tf;
void IsNumber(char x)
{
switch (x)
{
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
case '0':
bool tf(true);
break;
default:
bool tf(false);
break;
}
}
int main(int argc, const char * argv[])
{
using namespace std;
cout << "Test if a character is a number: " << endl;
char x;
cin >> x;
IsNumber((char) x);
if (bool tf = true)
cout << "True" << endl;
if (bool tf = false)
cout << "False" << endl;
return 0;
}
我在默认后收到错误:说我无法重新定义变量。而且,它在底部说,变量tf不是变量。我是C ++的新手,我只知道python可以帮助我吗?
新代码给我一个错误:
#include <iostream>
bool tf;
tf = true;
bool IsNumber(char x)
{
switch (x)
{
case '1':
答案 0 :(得分:6)
您尝试在同一范围内声明两个具有相同名称的变量。 switch
语句本身定义了一个范围,但每个case
语句都没有。如果你想在case
条款中使用范围,那么你必须自己提供一个:
case '0':
{
bool tf(true);
break;
}
虽然目前还不清楚它有什么用处;你要声明一个局部变量然后忽略它。也许您打算设置全局变量:
case '0':
tf = true;
break;
因此您可以使用
进行检查if (tf) // NOT if (bool tf = true) - that also declares a new local variable
或者,不那么怪,也许你想要返回一个值:
bool IsNumber(char x) {
switch (x) {
case '0':
// and so on
return true;
default:
return false;
}
}
并使用
进行测试if (IsNumber(x)) {
cout << "True" << endl;
} else {
cout << "False" << endl;
}
或者,如果详细程度不是你的话
cout << (IsNumber(x) ? "True" : "False") << endl;
甚至
cout << boolalpha << IsNumber(x) << endl;
在您熟悉范围,声明和定义等基础知识之前,您可能需要花一些时间阅读介绍性书籍。 Here是一些建议。
答案 1 :(得分:0)
您将x在最顶层定义为全局变量,然后尝试在main中再次定义它。您必须选择其中一个,或重命名一个。你可能想要做的就是摆脱主要的那个。
你也将你的bool比作= =而不是它们应该如何==。
编辑:你实际上根本不需要比较。
if(tf){
cout << "True\n"
}
else cout << "False\n"
这将看到tf是否为true并输出为true,如果不是,则输出false。
答案 2 :(得分:0)
你没有为tf指定任何东西,对于我们想要的比较运算符==而不只是='s。
if (tf == true) {
}
答案 3 :(得分:0)
您只能定义一个变量,您可以根据需要多次分配变量。
bool tf = false
表示我定义一个变量并分配它
如果我只想稍后分配
tf = false
如果我想进行条件测试
if (tf){do stuff}