考虑经典序列点示例:
i = i++;
Run Code Online (Sandbox Code Playgroud)
C和C++标准声明上述表达式的行为未定义,因为=运算符与序列点无关.
让我感到困惑的是,++优先级高于优先级=,基于优先级的上述表达式必须首先进行评估i++然后进行赋值.因此,如果我们开始i = 0,我们应该总是i = 0(或者i = 1,如果表达式i = ++i)结束而不是未定义的行为.我错过了什么?
我试图通过反射将枚举常量作为参数传递给方法.这是一个简单的例子,演示了我的问题的一个非常简化的版本.(假设我必须使用反射)
enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY
}
public class Main {
public void print(Day d) {
System.out.println(d);
}
public static void main(String[] args) throws Exception
{
Class<?> cl = Class.forName("Day");
Field field = cl2.getDeclaredField("MONDAY");
print(_what_to_pass_here?)
}
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
谢谢,