为什么我不能在C++中重新定义这个变量?
Why can't I redefine this variable in C++?
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':
您正在尝试在同一作用域中声明两个具有相同名称的变量。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;
您可能应该花一些时间阅读入门书籍,直到您对作用域、声明和定义等基础知识感到满意。以下是一些建议。
你还没有给 tf 分配任何东西,对于比较运算符,我们想要 == 而不仅仅是 =。
if (tf == true) {
}
您只能定义一个变量,您可以根据需要多次分配它。
bool tf = false
意味着我定义一个变量并分配它
如果我只是想稍后分配它
tf = false
如果我想做条件测试
if (tf){do stuff}
你在最顶部将 x 定义为全局变量,然后尝试在 main 中再次定义它。您必须选择一个或另一个,或重命名一个。您可能想做的是摆脱主要的那个。
你还会将布尔值比较为 =,而不是它们应该像 ==。
编辑:你实际上根本不需要在那里进行比较。
if(tf){
cout << "Truen"
}
else cout << "Falsen"
这将查看 tf 是否为真并输出为真,如果不是,则输出为假。
相关文章:
- 在头文件中定义变量不会出错
- 如何使用 SFINAE 在方法调用中有条件地定义变量?
- 在命名空间中定义变量
- 是否可以在C++中基于程序集输出(.dll或.exe)定义变量
- 用不同类型重新定义变量
- 具有全局定义变量的递归比没有全局定义变量的递归函数获得更多的堆栈.为什么?(跳入C++)
- 定义变量类型
- 在命名空间中定义变量,但在测试中获取空值
- cmake没有定义变量
- C 中的继承:在亲子类中定义变量
- 在同一函数中定义变量及其静态等效项
- 如何在 Tensorflow C++ 中定义变量的自定义有状态 Op 保存值
- 如何将 int 和 int* 传递到函数中以定义变量
- 在定义变量时调用类函数
- 定义变量与模板
- 定义变量类型
- 为什么您可以在 switch 语句中的"默认"下定义变量,而不能在"case"下定义变量
- C 如何基于另一个变量和某些算术定义变量的值
- C 可以指向具有定义变量的函数
- C 定义变量设置值