Sobes.tech
Назад к вопросам
Senior
6

Что выведут строки: "[phone]"[6] = 7 "[phone]"[6] == 7

Компании, где спрашивали
OZON логистика

Ответ от нейросети

sobes.tech AI

Рассмотрим выражения:

"[phone]"[6] = 7
"[phone]"[6] == 7

Строка "[phone]" — это строковый литерал, представляющий массив символов: {'[', 'p', 'h', 'o', 'n', 'e', ']', '\0'}. Индексация начинается с 0, поэтому:

  • [phone][0] = '['
  • [phone][1] = 'p'
  • ...
  • [phone][6] = ']'

Первое выражение:

"[phone]"[6] = 7;

пытается присвоить значение 7 элементу с индексом 6 в строковом литерале. Однако строковые литералы в C/C++ обычно размещаются в памяти только для чтения, и попытка изменить их приводит к неопределённому поведению (часто ошибка сегментации). Компилятор может выдать предупреждение или ошибку.

Второе выражение:

"[phone]"[6] == 7

сравнивает символ ']' (код ASCII 93) с числом 7. Результат будет false (0), так как 93 != 7.

Итого:

  • Присваивание "[phone]"[6] = 7 — некорректно и ведёт к ошибке.
  • Сравнение "[phone]"[6] == 7 — результат false.

Если нужно изменить символы, следует использовать изменяемый массив, например:

char phone[] = "[phone]";
phone[6] = 7; // корректно