谁说 if 和 else 永远不能在一起?

人们都说,世界上最远的距离,不是生与死,而是我在 if 里,你在 else 里,但是笔者发现,只要用一个小小的技巧,if 和 else 也会在一起的:

#include <iostream>
#include <csetjmp>
using namespace std;

int main() {
    jmp_buf jb;
    if (setjmp(jb) == 0) {
        cout << "I'm IF." << endl;
        longjmp(jb, 1);
    } else {
        cout << "I'm ELSE." << endl;
    }
    cout << "We are now TOGETHER!" << endl;
}
首先 jmp_buf 定义了一个数据结构,setjmp() 调用后会将所有与处理器相关的状态信息保存到 jmp_buf 中,而 longjmp() 则会转到 setjmp() 执行的地方,if 和 else 是不是就在一起了? 不过因为 longjmp() 在执行时有很大的不确定性,C++ 基本已抛弃不用,在 C 语言使用该函数时也应该慎重,所以以上代码仅供娱乐~

你可能感兴趣的:(谁说 if 和 else 永远不能在一起?)