请看此代码,输出结果是什么?
#include "setjmp.h"#include "stdio.h"
jmp_buf buf;
void main()
{
int i=5,set=5;
i++;
set=setjmp(buf);
printf("set=%d\n",set);
i++;
if(set==0)
longjmp(buf,set);
printf("i=%d,set=%d\n",i,set);
}
----------------解决方案--------------------------------------------------------
结果
set=0set=1
i=7,set=1
----------------解决方案--------------------------------------------------------
为什么set=1?
我的结果也是。我的意思是:为什么longjmp(buf,set);执行后set的值会变成1,这样有什么意义?
我原来以为不同的环境下set的值会有所不同,原来都是一样。
----------------解决方案--------------------------------------------------------
不同的编译器,结果也不同。
换了vc,这次i的值输出8. ----------------解决方案--------------------------------------------------------