почему эти toupper работают по-разному при использовании, как это?

почему один дает мне int, а другой нет ?:

    toupper(member_names[2]);

а также:

    member_names[2] = toupper(member_names[2]);

0

Решение

toupper принимает символ (закодированный в int по большей части историческим причинам) и возвращает заглавный эквивалент этого символа.

Следовательно, ваша первая версия ничего не дает. Ваш второй новообращенный member_names[2] в верхнем регистре эквивалент.

Также обратите внимание, что (в большинстве реализаций) char может иметь отрицательное значение (например, акцентированные символы в ISO 8859- *). Передача отрицательного значения в toupper может / приведет к (серьезным) проблемам — если member_names это массив unsigned charобычно вы хотите unsigned char прежде чем перейти к toupper:

member_names[2] = toupper(static_cast<unsigned char>(member_names[2]));
0

Другие решения

toupper функция не изменяет свой аргумент.
Итак, этот вызов:

toupper(member_names[2]);

возвращает значение, которое вы игнорируете.

Другая версия берет значение из toupper функция и назначение его member_names[2] тем самым изменяя предыдущее значение.

1

По вопросам рекламы [email protected]