Ještě přesněji řečeno, do intu lze dát pořadí znaku podle tabulky znaků, kromě ASCII mě napadají ještě EBCDIC, UTF-16 a UTF-32, a další čtyři různá kódování na starých počítačích.
Jedině v ASCII má
y hodnotu šestnáctkově 0x79, desítkově 121, a
n má 0x6e, desítkově 110. A nebo osmičkově 0171 a 0156
Ale v každém případě budou mít hodnotu
'y' a
'n', protože tímhle způsobem se v překladači vloží přímo hodnota znaku v kódování které daný systém používá, bez ohledu na to jaké to je. Vloží se tak pouze jeden znak, na rozdíl od
"y" nebo
"n", kde se vkládá celý string, což je text ukončený nulovým znakem
'\0'. Zároveň není dobré spoléhat na to že '\0' bude i číselně nula, na některých architekturách skutečně není, stejně tak jako se může lišit 0 a NULL, proto se musí vždy používat zástupný symbol '\0' místo čísla 0!
A také by nebylo od věci počítat se zadáním velkého písmene jako odpovědi, protože z pohledu uživatele není rozdíl mezi y a Y, nebo n a N (na rozdíl od pohledu překladače). Já C++ neovládám, ale mohlo by to fungovat třeba nějak takhle:
Kód: Vybrat vše
int odpoved;
cout << "Víte co je to PC? [y/n]: ";
cin >> odpoved;
if (odpoved == 'y' || odpoved == 'Y')
cout << "To si chytrej!!!\n";
else
if (odpoved == 'n' || odpoved == 'N')
cout << "To si blbej!!!\n";
else
cout << "Špatná odpověď!\n";
A nebo takhle:
Kód: Vybrat vše
int odpoved;
cout << "Víte co je to PC? [y/n]: ";
cin >> odpoved;
switch (odpoved)
{
case 'y':
case 'Y': cout << "To si chytrej!!!\n";
break;
case 'n':
case 'N': cout << "To si blbej!!!\n";
break;
default: cout << "Špatná odpověď!\n";
}