1 , , "- +"
.
printf("%c%3d\n", "- +"[i >= 0 + i > 0], abs(i));
[-999... + 999] pesky i = INT_MIN
, -i
undefined, :
printf("%c%3u\n", "- +"[i >= 0 + i > 0], (i < 0) ? 0u - i: 0u + i);
// or
printf("%c%3lld\n", "- +"[i >= 0 + i > 0], llabs(i));
#define INT_BUF_SIZE (CHAR_BIT * sizeof(int)*31/100 + 3)
int print_int(int x) {
char buf[INT_BUF_SIZE*2];
sprintf(buf, "%+d", x);
int width = 4;
return printf("%c%*s\n", x ? buf[0] : ' ', width - 1, buf + 1);
}
- 20
0
+ 20
+2147483647
-2147483648