C++ goto 语句执行而不调用
C++ goto statement execute without calling
我正在尝试制作一个简单的代码来演示Goto语句的好处。
我把goto标签放在一个if语句里:
int x;
cin>>x;
if (x == 10){
goto win;
}else{
cout<<"its not a 10";
}
win: cout<<"you win";
当 x 不是 10 时出现问题,如果为 9,则会显示它不是10你赢
我试图把胜利:cout<<"You win"; 放在 if 语句之前,仍然是同样的问题。
如果x
不等于10
,则会发生else
块。然后,控制将继续向前流动,直到达到cout<<"you win"
。仅仅因为在那cout
之前有一个标签,并不意味着它只会发生在你这样做goto win;
。它仍然是函数控制流的一部分。
这根本不是goto
的适当使用(甚至不能说)。你应该做的是:
if (x == 10){
cout<<"you win";
}else{
cout<<"its not a 10";
}
如果你真的想把cout<<"you win"
移动到另一个代码块,你需要把它放在它自己的函数中:
void print_win() {
cout<<"you win";
}
然后在第一个if
块中执行print_win();
。
这是演示您使用 goto 语句所犯错误的代码: 控制流被转移到一个逻辑流 (x==10) 中达到的点,在所有其他情况下也是如此。
很难证明goto语句的好处。你必须想出一个不是if或开关的逻辑。
您的代码示例演示了 goto 语句没有任何好处;
它包含一个逻辑错误,因为控制不考虑 x 的值将实现标签获胜。所以它总是会显示
you win
如果没有 goto 语句,代码会好得多。例如
int x;
cin >> x;
if ( x == 10 )
{
cout << "you win";
}
else
{
cout << "its not a 10";
}
相关文章:
- 是否可以依赖函数范围的静态变量来执行程序关闭期间调用的方法?
- 为什么即使调用了析构函数,C++11 中的分离线程也可以执行
- 无法调用成员函数,尝试正确执行此操作仍然失败
- 不执行任何操作的函数调用C++
- 在 c++ 托管和异步运行中调用 c# 可执行文件
- 调用函数一次用于动态链接库,一次从可执行文件调用函数
- 如何执行参数化构造函数的调用?
- 当再次触发信号时,从Qt插槽执行的功能被第二次调用时会发生什么?
- 在可变函数调用中执行一次语句
- 如何在派生类中不显式调用base::func()的情况下从基类执行虚拟函数
- 只有一个可执行文件即可进行跨平台 SIMD 调用?
- 调用函数来创建 WinAPI 按钮不会执行任何操作
- 从 PHP 调用已编译的C++可执行文件来创建套接字
- 如何让派生类在调用基类之前执行操作?
- 在 MySQL 连接器C++ API 中使用一个函数调用执行多个查询的正确方法是什么?
- 在链接的程序集文件中,我想从 c++ 调用代码访问变量.是否可以在不触发访问冲突的情况下执行此操作?
- 编译器是否对所有内联函数调用执行相同的操作
- setxkbmap 从系统调用执行时返回 65280
- 在C++中,我们如何用有效的X(Args..)语法调用执行函数的所有内容
- 如何为函数调用执行令牌粘贴