Re: [问题] 不用if-else, for, while, do-while取绝

楼主: ibmibmibm (BestSteve)   2016-04-11 23:41:37
原文恕删
用setjmp/longjmp来模拟while loop
这里有测试结果
http://ideone.com/PetGBe
以下是程式码
#include <stdio.h>
#include <setjmp.h>
int abs(int value) {
jmp_buf buf;
char buffer[16];
snprintf(buffer, sizeof(buffer), "%d+", value);
char *cursor = buffer;
switch (setjmp(buf)) {
case 0:
++cursor;
longjmp(buf, *cursor);
case '-':
*cursor = ' ';
++cursor;
longjmp(buf, *cursor);
case '+':
*cursor = '\0';
sscanf(buffer, "%d", &value);
return value;
default:
++cursor;
longjmp(buf, *cursor);
}
}
int main(void) {
int value;
while (1 == scanf("%d", &value)) {
printf("%d\n", abs(value));
}
return 0;
}
作者: wtchen (没有存在感的人)   2016-04-12 02:55:00
请勿再回文,原作者已射后不理(虽然整个讨论挺有趣的)
作者: Schottky (顺风相送)   2016-04-12 03:07:00
我倒觉得像这种状况,大家玩得开心就好已经没有人在管原PO到底为何有这种怪要求了 XD
作者: wtchen (没有存在感的人)   2016-04-12 03:46:00
是挺开心的,不过3篇回文也够了见好就收

Links booklink

Contact Us: admin [ a t ] ucptt.com