Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

Cのsetjump()とlongjump()


このセクションでは、Cのsetjumpとlongjumpを確認します。setjump()とlongjump()は、setjmp.hライブラリにあります。これら2つの関数の構文は次のようになります。

setjump(jmp_buf buf) : uses buf to store current position and returns 0.
longjump(jmp_buf buf, i) : Go back to place pointed by buf and return i.

これらは、例外処理のためにCで使用されます。 setjump()はtryブロックとして使用でき、longjump()はthrowステートメントとして使用できます。 longjump()転送は、setjump()によってポイントされるpointeを制御します。

ここでは、再帰、ループ、またはマクロ展開を使用せずに数値を100回印刷する方法を説明します。ここでは、setjump()関数とlongjump()関数を使用してこれを行います。

#include <stdio.h>
#include <setjmp.h>
jmp_buf buf;
main() {
   int x = 1;
   setjmp(buf); //set the jump position using buf
   printf("5"); // Prints a number
   x++;
   if (x <= 100)
      longjmp(buf, 1); // Jump to the point located by setjmp
}

出力

5555555555555555555555555555555555555555555555555555555555555555555555555555
555555555555555555555555

  1. UEFIとWindows8

    この記事では、UEFIの概念の概念と、Windows8でのこのテクノロジーのアプライアンスについて説明します。 UEFIテクノロジーとは何ですか? UEFIの略語は、Unified ExtensibleFirmwareInterfaceの略です。このテクノロジは、従来のコンピュータブートシステムの変更用に設計されており、廃止されたBIOSシステムに取って代わる必要があります。しかし、それは古いテクノロジーの近代化だけでなく、OSとコンピューターの起動テクノロジーに対する根本的に新しいアプローチです。実際、UEFIはPCBIOSシステムとは実質的に何の関係もありません。 [アコーディオン][

  2. Pythonの3と7

    正の数nがあるとすると、3の非負の倍数と7の非負の倍数を合計することでnを作成できることを確認する必要があります。 したがって、入力が13のような場合、13は1 * 7 + 2 * 3 =13 と記述できるため、出力はTrueになります。 これを解決するには、次の手順に従います- 0からn+1の範囲のiの場合、7ずつ増やします。 n-iが3で割り切れる場合、 Trueを返す Falseを返す 理解を深めるために、次の実装を見てみましょう- 例 class Solution:    def solve(self, n):