みなさん、こんにちは。今日は C 言語の分岐とループについての話は終わりました。今日は goto 文について話します。後ほど、みんながよりよく学べるように、みんながやるべきいくつかのトピックを更新します。
goto ステートメント
C 言語には、自由に悪用できる goto ステートメントと、ジャンプをマークするラベルが用意されています。
理論的には goto ステートメントは必要なく、実際には goto ステートメントがなくてもコードは簡単に記述できます。
ただし、goto ステートメントは依然として役立つ場合があり、最も一般的な使用法は、深くネストされた構造でプログラムの処理を終了することです。
例: 2 つ以上のループ層から一度にジャンプします。
この多層ループの場合にブレークを使用すると、目的を達成できません。最も内側のループから前のループに抜けることしかできません。
for(...)
for(...)
{
for(...)
{
if(disaster)
goto error;
}
}
…
error:
if(disaster)//处理错误情况
上記のコードでは、エラーが発生してループから抜け出さなければならないように見えますが、ループから抜け出すためにbreakを使用する場合は、少なくとも3回のbreakが必要です。gotoの場合は、直接ジャンプします。エラーになり、次のステップに進みます。
以下は、ループを使用して goto ステートメントを置き換える例です。
次はシャットダウン プログラムです。
プログラムが実行されている限り、コンピューターは 1 分以内にシャットダウンします。入力: 私は豚です。シャットダウンをキャンセルします。コードを書く前に、まず理解しなければならないことが 1 つあります
。
これはコンピュータのコマンド プロンプトです。shutdown -s -t 60 と入力すると、コンピュータが 60 秒以内に自動的にシャットダウンすることを意味します。shutdown
-a と入力すると、シャットダウンをキャンセルします。
上記を理解した後、コードを書き始めました
int main()
{
system()//这个库函数是用来执行系统命令的
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char input[20] = {
0};
system("shutdown - s - t 60");//表示电脑还有60秒就关机
again:
printf("请注意:你的电脑还有60秒就会关机,输入“我是猪”就取消关机\n");
scanf("%s", input);
//判断
if (strcmp(input, "我是猪") == 0)
{
system("shutdown -a");
}
else
{
printf("请重新输入\n");
goto again;
}
return 0;
}
上記は完全なコードですが、他のコードで置き換えることができると書かれていますが、ここでは代わりに他のコードを使用します。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char input[20] = {
0 };
system("shutdown - s - t 60");//表示电脑还有60秒就关机
printf("请注意:你的电脑还有60秒就会关机,输入“我是猪”就取消关机\n");
scanf("%s", input);
//判断
while (1)
{
if (strcmp(input, "我是猪") == 0)
{
system("shutdown -a");
break;
}
}
return 0;
}
これは while ループで置き換えられるものです
簡単なコードを使用して goto ステートメントの理解を示し、分岐とループも学習できるようにします。このトピックは後で全員に向けて更新します。皆さん、ありがとうございました。今日の共有はこれで終わりです。