Почему этот код приводит к ошибке компиляции? - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть экзаменационные работы, которые были в прошлом году, и я рецензировал их. У меня проблема одна точка. Как вы можете видеть нижеприведенные коды, мой учитель сказал, что указанные коды будут ошибкой компиляции, но я попробовал это сделать в Visual Studio на моем компьютере, и она работала с выходными данными: 4.0 Коды:

float x = 3.0;
float y = 2.0;
int j = 10;
int k = 4;                 

j = j / k + y;

Я буду присутствовать на экзамене завтра об этом. Что я должен написать как ответ?

Ответы [ 2 ]

3 голосов
/ 05 ноября 2019

Здесь я вижу только две проблемы:

  • Переменная x не используется, что может быть ошибкой, если ваш компилятор настроен на включение предупреждений о неиспользуемых переменных, и вы попросили ваш компилятор превратить все предупреждения в ошибки. Тем не менее, он обычно хорошо компилируется с настройками компилятора по умолчанию.
  • Оператор присваивания хранит значение float в переменной int, что, вероятно, является тем, к чему стремится ваш учитель. Однако это преобразование является автоматическим и не приводит к ошибке (но может генерировать предупреждение).

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


Как уже говорили другие, "код должен быть заключен в int main() функцию", это также довольно пуленепробиваемый способ правильно задать вопрос, если ваш учитель разумен.


Если вы отметили, что ошиблись, заявив, что нет ошибки времени компиляции, поговорите с учителем и покажите им. Я успешно обсуждал вопросы на экзаменах по тем же причинам. (У меня был один вопрос, спрашивающий, почему o.ToString; была ошибкой во время компиляции в программе на C #. Профессор искал «недостающие символы скобок». Правильный ответ был «o не входит в сферу действия».)

2 голосов
/ 05 ноября 2019
int main() {
  float x = 3.f; // unused-variable warning
  float y = 2.f;
  int j = 10;
  int k = 4;

  j = j / k + y;
}

Будет компилироваться с g ++, если вы компилируете с

g++ -Wall -pedantic -pedantic-errors test.cpp

У вас будет только предупреждение, потому что x не используется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...