char
достаточно велико для одного символа (обычно это 8-битное количество, но не полагайтесь на это).
Таким образом, ваша переменная product
может содержать только один символ.
E007C02A55EF918D
- это идентификатор (поскольку он начинается с буквы, он не считается числом, а поскольку он не заключен в кавычки, он не интерпретируется как строка).
Если вы хотели, чтобы product
и эти серийные номера были 64-разрядными, вам нужно изменить product
на достаточно большой, чтобы хранить их (например, uint64_t
), и изменить серийные номера в вашем коде. быть числами с префиксом 0x
. Вам также придется изменить метод ввода (getline
принимает строки, поэтому вам нужно будет преобразовать эту строку в число - см., Например, Как преобразовать число в строку и наоборот в C ++ . ).
if (product == 0xABCD1234)
Если вы поместили оба отступа в строки, объявите product
с:
std::string product;
и указать (""
) серийные номера. Вам также нужно изменить последний тест на:
if (product == "z")
^ ^
Вы не можете сравнить std::string
с одним char
('z'
- это символ, "z"
- это строка в стиле C с нулем в конце).