The use of "1$", "2$" et al in printf format specifiers is a POSIX-specific feature.
On Cygwin (newlib) this is handled correctly in most cases, but one example I tried misbehaves. The output is correct on other implementations, including glibc and musl on Ubuntu. This C program: #include <stdio.h> int main(void) { long long a = 123456789876543210; double b=1.0/3; printf("a:%2$8.8lld b:%1$10.2g\n", b, a); } should produce this output: a:123456789876543210 b: 0.33 Under Cygwin (fully updated), with "gcc c.c -o c && ./c", the output is: a:140732550844138 b: 7.1e-315 -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple