こう。 #7348(2008/08/25 22:21 GMT) [ C ] Rating0/0=0.00
もう少し縮めた。 sprintf版は2文字関数名が増えてるけどタブ・改行含めて145byte、 printf版は同じく126byte・・・かな?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
#include <stdio.h> #include <string.h> #define QWORD unsigned long long #define DWORD unsigned long #define WORD unsigned short #define BYTE char void s_conv_byte(char *p,QWORD n){ int m,i=7; while(i--)p+=(m=(n>>10*i)&1023)|!i&!n?sprintf(p,"%d%c",m,"BKMGTPE"[i]):i?0:sprintf(p,"B"); } void conv_byte(QWORD n){ int m,i=7; while(i--)(m=(n>>10*i)&1023)|!i&!n?printf("%d%c",m,"BKMGTPE"[i]):i?0:printf("B"); } void s_conv_put(char *buf,QWORD n){ s_conv_byte(buf,n); printf("%Ld=%s\n",n,buf); } void conv_put(char *buf,QWORD n){ printf("%Ld=",n,buf); conv_byte(n); printf("\n"); } int main(){ char buf[64]; conv_put(buf,(QWORD)-1); conv_put(buf,(DWORD)-1); conv_put(buf,(WORD)-1); conv_put(buf,(BYTE)-1); conv_put(buf,0); conv_put(buf,(QWORD)1024*1024*1024*1024*1024*1024); conv_put(buf,(QWORD)1024*1024*1024*1024*1024); conv_put(buf,(QWORD)1024*1024*1024*1024); conv_put(buf,(QWORD)1024*1024*1024); conv_put(buf,(QWORD)1024*1024); conv_put(buf,(QWORD)1024); conv_put(buf,(QWORD)1); return 0; }
Rating0/0=0.00-0+
[ reply ]
こう。 #7348() [ C ] Rating0/0=0.00
Rating0/0=0.00-0+