Printf: différences dans l’implémentation de Java et de C

J’ai remarqué aujourd’hui que je ne pouvais pas utiliser * pour passer des arguments de largeur ou de précision à l’implémentation de printf Java.

C’est-à-dire que les arguments suivants pour printf sont valables en C, mais pas en Java:

 "%*d", 10, 3 "%-*d", 10, 3 "%0*d", 10, 3 "%*.5f", 11, 1.0/9 "%-11.*f", 5, 1.0/9 "%0*.*f", 11, 5, 1.0/9 

Existe-t-il d’autres différences de mise en œuvre dont je devrais être au courant?

Je ne penserais pas à cela comme des différences. Je viens de lire attentivement la documentation Java et de partir de là. Penser en termes de différences risque de faire glisser des éléments du réseau.

En d’autres termes, je considérerais les similitudes comme des coïncidences et supposerais que les deux sont différentes jusqu’à preuve du contraire 🙂

Une différence m’a frappé récemment: lors de l’impression d’un nombre à virgule flottante avec% g (choisissez automatiquement% e ou% f), le drapeau de précision est différent:

 Java: precision = "number of fractional digits after the decimal point" (%f, %e) "total number of digits in the resulting magnitude after rounding" (%g %G) C: precision = "number of fractional digits after the decimal point" (%f %e ) "maximum number of significant digits" (%g %G)