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