Jaký je rozdíl mezi% 2d a% 02d v jazyce C? Jaká je logika?


Odpověď 1:

% 2d v jazyce c vloží číslo prázdným místem. Na zobrazení čísla by mělo trvat méně než 2 znaky:

int x = 5;
printf ("% 2d", x);

výstup bude „5“, všimněte si, že před 5 je prázdný prostor.

Pokud se pokusíte udělat něco takového:

int x = 454;
printf ("% 2d", x);

výstup bude 454 bez úvodních mezer.

teď mluvme o% 02d:

0 znamená, že se pole vyplní nulami a 2 znamená, že pole je široké dva znaky, takže pro všechna čísla, která mají zobrazit méně než 2 znaky, bude vyplněno 0.

int x = 3;
printf ("% 02d", x);

výstup bude 03

pokud se pokusíte udělat něco jako:

int x = 345;
printf ("% 02d", x);

výstup bude 345 a nebudou přidány žádné úvodní nuly.

Nyní pojďme dolů na „% .6f“:

To znamená, že za desetinným místem zaokrouhlí na 6 číslic (zaokrouhluje na 6 míst):

float x = 345,24678389;
printf ("%. 6f", x);

výstup bude 345.246784, protože na 7. pozici je číslo větší než 5, takže se zaokrouhlí na 3 až 4.

Snad to pomůže !

šťastné kódování :)


Odpověď 2:

Význam% 2d: - Když čtete celé číslo (% 2d), umožní to pouze celé číslo až do dvou číslic. Pokud byste měli číst pole o délce 50 znaků, měli byste použít% 50s. Je to stejný nápad.

int číslo = 0;
scanf ("% 2d", & číslo);
printf ("% d", číslo);

Pokud uživatel předal 21 funkci scanf (), číslo 21 by bylo uloženo v proměnné číslo. Pokud uživatel předá něco delšího než 21, tj. 987, budou uloženy pouze první 2 číslice - 98.

Význam% 02d: - Musíte použít% 02d, pokud chcete, aby úvodní nuly byly vyplněny do dvou mezer:

printf ("% 02d:% 02d:% 02d \ n", hodina, minuta, sekunda);

Viz například následující kompletní program:

#include 
int main (neplatné) {
    int hh = 3, mm = 1, ss = 4, dd = 159;
    printf ("Čas je% 02d:% 02d:% 02d.% 06d \ n", hh, mm, ss, dd);
    návrat 0;
}

které výstupy:

Čas je 03: 01: 04 000159

Odpověď 3:

Význam% 2d: - Když čtete celé číslo (% 2d), umožní to pouze celé číslo až do dvou číslic. Pokud byste měli číst pole o délce 50 znaků, měli byste použít% 50s. Je to stejný nápad.

int číslo = 0;
scanf ("% 2d", & číslo);
printf ("% d", číslo);

Pokud uživatel předal 21 funkci scanf (), číslo 21 by bylo uloženo v proměnné číslo. Pokud uživatel předá něco delšího než 21, tj. 987, budou uloženy pouze první 2 číslice - 98.

Význam% 02d: - Musíte použít% 02d, pokud chcete, aby úvodní nuly byly vyplněny do dvou mezer:

printf ("% 02d:% 02d:% 02d \ n", hodina, minuta, sekunda);

Viz například následující kompletní program:

#include 
int main (neplatné) {
    int hh = 3, mm = 1, ss = 4, dd = 159;
    printf ("Čas je% 02d:% 02d:% 02d.% 06d \ n", hh, mm, ss, dd);
    návrat 0;
}

které výstupy:

Čas je 03: 01: 04 000159

Odpověď 4:

Význam% 2d: - Když čtete celé číslo (% 2d), umožní to pouze celé číslo až do dvou číslic. Pokud byste měli číst pole o délce 50 znaků, měli byste použít% 50s. Je to stejný nápad.

int číslo = 0;
scanf ("% 2d", & číslo);
printf ("% d", číslo);

Pokud uživatel předal 21 funkci scanf (), číslo 21 by bylo uloženo v proměnné číslo. Pokud uživatel předá něco delšího než 21, tj. 987, budou uloženy pouze první 2 číslice - 98.

Význam% 02d: - Musíte použít% 02d, pokud chcete, aby úvodní nuly byly vyplněny do dvou mezer:

printf ("% 02d:% 02d:% 02d \ n", hodina, minuta, sekunda);

Viz například následující kompletní program:

#include 
int main (neplatné) {
    int hh = 3, mm = 1, ss = 4, dd = 159;
    printf ("Čas je% 02d:% 02d:% 02d.% 06d \ n", hh, mm, ss, dd);
    návrat 0;
}

které výstupy:

Čas je 03: 01: 04 000159