Path: csiph.com!eternal-september.org!feeder.eternal-september.org!nntp.eternal-september.org!.POSTED!not-for-mail From: Keith Thompson Newsgroups: comp.lang.c Subject: Re: printf and time_t Date: Thu, 05 Feb 2026 21:10:57 -0800 Organization: None to speak of Lines: 50 Message-ID: <87ikca8nj2.fsf@example.invalid> References: <10jfol6$2u6r8$1@news.xmission.com> <87bjj5gei4.fsf@example.invalid> <20260108023846.0000260c@yahoo.com> <10jpi8h$15aea$1@dont-email.me> <20260109141859.00004f22@yahoo.com> <10jv3rb$15aea$2@dont-email.me> <20260111132015.000026ad@yahoo.com> <86zf6kkjw0.fsf@linuxsc.com> <20260111235104.00001463@yahoo.com> <86ms1pj0bc.fsf@linuxsc.com> <10ltjjt$1o4pk$1@dont-email.me> <865x8cio5y.fsf@linuxsc.com> <10lvt1s$2fu8f$1@dont-email.me> <10lvul0$2gps1$1@dont-email.me> <10m024m$2hqvi$1@dont-email.me> <10m091i$2kiff$1@dont-email.me> <10m0b0g$2l6li$1@dont-email.me> <10m1vl7$35irp$1@dont-email.me> <10m2kpb$3cm2p$1@dont-email.me> <10m374q$2d053$1@dont-email.me> <10m39sd$3ladr$1@dont-email.me> MIME-Version: 1.0 Content-Type: text/plain Injection-Date: Fri, 06 Feb 2026 05:10:59 +0000 (UTC) Injection-Info: dont-email.me; posting-host="44e384fb3fd0ff728a4bb0cd5ce7cfc9"; logging-data="4054743"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/5RKQFH2rhW+2g2njguCxo" User-Agent: Gnus/5.13 (Gnus v5.13) Cancel-Lock: sha1:meYijL9fpr0LeabZLT/S4YFSc3E= sha1:2xj6zOfNvbab2T2j6dHrqAHnMW8= Xref: csiph.com comp.lang.c:396614 Bart writes: [...] > /Some/ compilers with /some/ options will /sometimes/ tell you when > you've got it wrong. > > But you first have to make an educated guess, or put in some dummy > format code. > > Eventually, it will compile. Until someone else builds your program, > using a slightly different set of headers where certain types are > defined, and then it might either give compiler messages that they > have to fix, or it show wrong results. That's not how I do it, and I don't think it's how most programmers do it. I know the rules well enough that I can usually write a correct format string in the first place. If I make a mistake, gcc's warnings are a nice check. > If I compile this code with 'gcc -Wall -Wextra -Wpedantic': > > #include > > int main() { > int a = -1; > printf("%u", a); > } > > it says nothing. The program displays 4294967295 instead of -1. The behavior is unsurprising. The lack of a warning is very mildly inconvenient. > If compile this version (using %v) using a special extension: > > #include > > int main() { > int a = -1; > printf("%v", a); > } > > it shows -1. Which is better? The one I can actually use. -- Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com void Void(void) { Void(); } /* The recursive call of the void */