Когда вы набираете if (currency == "yen" || "y")
, вы, вероятно, хотите, чтобы это означало «если currency
равно "yen"
или если оно равно "y"
, сделайте что-нибудь».
Однако это это не то, что на самом деле делает ваш оператор if. Оператор if
if (currency == "yen" || "y")
сначала проверяет, равна ли строка currency
"yen"
, а если нет, то вычисляет "y"
самостоятельно и проверяет, соответствует ли она равно true.
В этом случае «y» будет усечено до bool
, что означает, что оно будет оцениваться как true
(потому что "y"
не равно 0
). В результате ваш первый if-оператор будет всегда оценивается как истина!
Чтобы исправить это, замените свой if-оператор на if (currency == "yen" || currency == "y")
.
Для своего второго вопроса вы можете использовать условный оператор, который работает так:
cout << "You have " << (val1 == 1 ? "thing" : "things") << endl;
Условным условием в этом случае является (val1 == 1 ? "thing" : "things")
. Он проверяет наличие val1 == 1
, затем возвращает "thing"
, если это true
, и "things"
в противном случае.