Рубрики

Разница типов символьных литералов в C и C ++

Каждый литерал (константа) в C / C ++ будет иметь информацию о типе, связанную с ним.

Как в C, так и в C ++ числовые литералы (например, 10) будут иметь тип int . Это означает, что sizeof (10) и sizeof (int) будут возвращать одно и то же значение.

Однако символьные литералы (например, 'V') будут иметь разные типы, sizeof ('V') возвращает разные значения в C и C ++. В C символьный литерал обрабатывается как тип int, где, как и в C ++, символьный литерал обрабатывается как тип char ( sizeof ('V') и sizeof (char) одинаковы в C ++, но не в C).

int main()

{

   printf("sizeof('V') = %d sizeof(char) = %d", sizeof('V'), sizeof(char));

   return 0;

}

Результат вышеуказанной программы:

C result — sizeof ('V') = 4 sizeof (char) = 1

Результат C ++ — sizeof ('V') = 1 sizeof (char) = 1

Такое поведение требуется в C ++ для поддержки перегрузки функций. Пример прояснит это. Предсказать вывод следующей программы на C ++.

void foo(char c)

{

   printf("From foo: char");

}

void foo(int i)

{

   printf("From foo: int");

}

  

int main()

{

   foo('V');

   return 0;

}

Компилятор должен вызвать

void foo(char);

так как тип 'V' является char .

Статья вклада команды Venki и Geeksforgeeks.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Разница типов символьных литералов в C и C ++

0.00 (0%) 0 votes