Меню Закрыть

Слишком много знаков в символьной константе c

Содержание

Я изучаю C ++, и я не могу обойти эту проблему,

всякий раз, когда я пытаюсь запустить его, я получаю эти ошибки. Плюс это ответ моего лектора

Решение

Проблема в том, что у вас вместо кавычек ASCII есть кавычки в Юникоде; возможно, ваш редактор автоматически изменил их, или вы скопировали текст с сайта, который делает это автоматически, в своем авторском программном обеспечении. Замените кавычки на обычные кавычки ASCII (0x22, «), и это должно работать.

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

Вы, кажется, используете неправильные символы кавычек. Если я изменю то, что вы должны:

У меня нет проблем компиляции (VC ++ 2015).

Это может зависеть от настроек клавиатуры, какие символы кавычек используются.

Попробуйте установить компоновщик на «Нет», чтобы увидеть, появляется ли ошибка по-прежнему

2 Tse Hei [2016-04-25 14:53:00]

Я изучаю C++, и я не могу обойти эту проблему,

когда я пытаюсь запустить его, я получил эти ошибки. Плюс это ответ, данный моим лектором

3 ответа

1 piyushj [2016-04-25 15:02:00]

Проблема в том, что у вас есть кавычки Юникода вместо кавычек ASCII; вероятно, ваш редактор автоматически изменил их, или вы скопировали текст с сайта, который делает это автоматически в своем программном обеспечении для разработки. Замените кавычки обычной котировкой ASCII (0x22, "), и она должна работать.

0 [2016-04-25 18:13:00]

Попробуйте установить компоновщик на "Нет", чтобы увидеть, появляется ли ошибка

Кажется, вы используете неправильные символы котировок. Если я изменю то, что вам нужно:

У меня нет проблем с компиляцией (VС++ 2015).

Возможно, это зависит от настроек вашей клавиатуры, которые используются в котировочных символах.

Обновл. 7 Апр 2019 |

До этого момента, все переменные, которые мы рассматривали, были не константами. Их значения можно было изменить в любое время. Например:

Читайте также:  R7 m260dx тест в играх

Тем не менее, иногда полезно использовать переменные, значения которых изменить нельзя — константы.

Константы

Возьмём к примеру величину силы тяжести на Земле: 9.8м/с^2. Она вряд ли поменяется в ближайшее время. Использовать константу в этом случае будет наилучшим вариантом, так как мы предотвратим, таким образом, любое (даже случайное) изменение этого значения.

Чтобы сделать переменную константой — используйте ключевое слово const перед типом переменной или после него. Например:

Несмотря на то, что C++ позволяет размещать const как перед типом данных, так и после него, хорошей практикой считается размещать const перед типом данных.

Константы должны быть инициализированы при объявлении. Изменить их значения с помощью операции присваивания нельзя:

Объявление константы без её инициализации также вызовет ошибку компиляции:

Обратите внимание, константы могут быть инициализированы и с помощью не константных значений:

const является наиболее полезным (и наиболее часто используемым) с параметрами функций:

Таким образом, при вызове функции, константа-параметр сообщает и гарантирует нам то, что функция не изменит значение переменной myValue.

Время компиляции и время выполнения

Когда вы находитесь в процессе компиляции программы, то это время компиляции (англ. «compile time»). Компилятор проверяет вашу программу на синтаксические ошибки и, если их нет, конвертирует код в объектные файлы.

Когда вы находитесь в процессе запуска вашей программы или когда ваша программа уже выполняется, то это время выполнения (англ. «runtime»). Код выполняется строка за строкой.

Спецификатор constexpr

В C++ есть два вида констант:

Константы времени выполнения. Их значения определяются только во время выполнения программы. Переменные типа usersAge и myValue выше являются константами времени выполнения, так как компилятор не может определить их значения во время компиляции. usersAge зависит от пользовательского ввода (который можно получить только во время выполнения программы), а myValue зависит от значения, переданного в функцию (которое станет известным также во время выполнения программы).

Читайте также:  Lenovo ошибка шифрования при загрузке

Константы времени компиляции. Их значения определяются во время компиляции программы. Например, переменная со значением силы тяжести на Земле является константой времени компиляции, так как мы её определяем во время написания программы (до начала её выполнения).

В большинстве случаев, не важно какой тип константы вы используете: времени выполнения или времени компиляции. Однако, всё же есть несколько ситуаций, когда C++ может требовать константу времени компиляции вместо времени выполнения (например, при определении длины массива фиксированного размера — мы рассмотрим это несколько позже). Так как есть 2 типа констант, то компилятору нужно постоянно отслеживать, к какому из них относится определённая переменная. Чтобы упростить это задание, в C++11 добавили спецификатор constexpr, который сообщает компилятору, что текущая переменная является константой времени компиляции:

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.