Ahoj, začinám s Céčkem a jedu dle učebnice od Pavla Herouta.
Zadání příkladu bylo takové, abych si zkusil funkci závorek v podmínce a uvědomil si jejich rozdíl a důležitost. To jsem pochopil.
Ale v přiloženém vyřešeném příkladě je u prvního if, while, které pokud dobře chápu, čeká na to, až c = '\n' a pokud to nastane, tak cyklus ukončí. Vůbec nechápu proč to tam je a proč to bez toho nefunguje. A co konkrétně znamená "vyprázdnění bufferu klávesnice".
Díky za rady a vysvětlení "polopatě".
/*
* cv05.c v.2.0
*
* Chybna priorita v nacitani a v porovnavani
* ==========================================
*
*/
#include <stdio.h>
int main(void)
{
int c;
/* spravna priorita */
printf("Zadej velke pismeno (A az Z): ");
if ((c = getchar()) >= 'A' && c <= 'Z') {
printf("Spravna priorita operatoru:\n");
printf("Bylo zadano pismeno s ASCII hodnotou: %d\n", c);
}
/* vyprazdneni bufferu klavesnice */
while (getchar() != '\n')
;
/* chybna priorita */
printf("Zadej velke pismeno (A az Z): ");
if (c = getchar() >= 'A' && c <= 'Z') {
printf("Chybna priorita operatoru:\n");
printf("Bylo zadano pismeno s ASCII hodnotou: %d\n", c);
}
return 0;
}