为什么这段代码会导致编译错误

Why does this code lead to Compile Error?

本文关键字:编译 错误 代码 段代码 为什么      更新时间:2023-10-16

我有去年的试卷,我一直在复习。我有一点有问题。正如你可以看到下面的代码,我的老师说给定的代码将导致编译错误,但我在我的计算机上的Visual Studio上尝试了它,它与输出一起工作:4.0代码是:

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

我将参加明天的考试。我应该写些什么作为答案?

我在这里只看到两个问题:

  • x变量未使用,如果编译器设置为对未使用的变量启用警告,并且您已要求编译器将所有警告转化为错误,则可能是错误。但是,使用默认的编译器设置,它通常会编译得很好
  • 赋值语句将float值存储在int变量中,这可能是您的老师正在处理的问题。但是,这种转换是自动的,不会导致错误(但可能会生成警告(

换句话说,你的老师似乎错了,实际上并没有尝试编译这段代码。


正如其他人所说,如果你的老师是合理的,"代码需要封装在int main()函数中"也是一种很好的解决问题的方法。


如果你因为说没有编译时错误而被打错了,去和老师谈谈并展示他们。出于类似的原因,我成功地反驳了考试中的观点。(我有一个问题问为什么o.ToString;是C#程序中的编译时错误。教授正在寻找"缺少parens"。正确答案是"o不在范围内。"(

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,您将只收到一条警告。