2014-05-21 1 views
0

Поскольку переменные должны определяться типом данных, я не могу понять, почему это не относится к литералам и константам. Как программа может сказать, нужно ли сохранить значение const как int или double и т. Д. И как он может использовать арифметические операторы для вычисления, например, суммы двух констант. Я имею в виду, как он извлекает числовое значение из 234, если он сохраняется как последовательность из трех (2, 3, 4) числа. Как это число может иметь значение, если оно не преобразуется сначала по типу данных. Я имею в виду, когда вы вводите эти цифры, они не сохраняются как просто еще один символ. Я имею в виду, что знаю, что я ошибаюсь, но, пожалуйста, скажите мне, почему.Как литералы и константы интерпретируются и сохраняются программой

ответ

0

Литералы имеют типы. Например,

  • Тип 234: int.
  • Тип 23.4: double.
  • Тип 'a': char.
  • Тип "hello, world": const char[13].

Типы литералов могут быть изменены с помощью префиксов и суффиксов. Например,

  • Тип 234u: unsigned int.
  • Тип 23.4f: float.
  • Тип L'a': wchar_t.
  • Тип L"hello, world": const wchar_t[13].

C++ 11 добавляет дополнительные виды встроенных литералов, а также пользовательские литералы.

Каждый литерал имеет четко определенный тип. Конечно, буквальный, как 234, легко преобразуется в любым цифровым типом, поэтому вы можете сделать double x = 234;. Тем не менее, 234 в этом контексте имеет тип int, как и всегда, а не double.

 Смежные вопросы

  • Нет связанных вопросов^_^