Re: [問題] 不用if-else, for, while, do-while取絕
原文恕刪
用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;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.147.112
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1460389303.A.EAA.html
→
04/12 02:55, , 1F
04/12 02:55, 1F
→
04/12 03:07, , 2F
04/12 03:07, 2F
→
04/12 03:08, , 3F
04/12 03:08, 3F
推
04/12 03:46, , 4F
04/12 03:46, 4F
→
04/12 03:47, , 5F
04/12 03:47, 5F
討論串 (同標題文章)
完整討論串 (本文為第 5 之 5 篇):