gpt4 book ai didi

java - Java 编译器是否存在 "assignment has no effect"警告/错误错误

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:59:28 27 4
gpt4 key购买 nike

Java 编译器 (Jdk8) 似乎缺少对像 'j = j++;' 这样的赋值的警告没有效果,但它会为诸如“j =++j;”之类的分配生成警告实际上有效果。我附上了一个演示脚本。

请注意,您必须选择适当的标志来报告 java 编译器中的赋值错误 java compiler settings

public static void main(String[] args) {
int j = 0;
j = ++j; //Compiler warning: The assignment to variable j has no effect
System.out.println("j="+j); //Prints 1

int i = 0;
i = i++; //Compiler warning: 'None'
System.out.println("i="+i); //Prints 0
}

这是java编译器的bug吗?

最佳答案

但是警告和没有警告是正确的:

  • j =++jj = 部分无效; j 中已有更新后的值。所以警告是有道理的。
  • 但是 i = i++i = 部分 确实 有效果:在 i 增加到1,它被赋予值 0 — 右侧表达式的结果。因此,“无效”警告不仅不需要,而且是错误的。

对于 i 情况,您可能有一个不同的警告参数,但一般来说,编译器不会做大量的 linting(检查可能是逻辑错误但不是语言错误)。

我应该注意到,OpenJDK 编译器根本不会针对给定代码发出任何警告。 Eclipse 有自己的编译器,并且该编译器会发出更多警告,所以...您可能想向他们提出请求,为 i = i++ 情况添加警告,例如“副作用在右边的表达式中被赋值否定”或类似的东西。

关于java - Java 编译器是否存在 "assignment has no effect"警告/错误错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58131789/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com