不知道还有没其他方法?
.
关于题主这里为什么会发生2+2=5
,是因为两个H,其中一个是Unicode编码的。用Ctrl+F
就可以发现这个问题了~
Both the H character and the Unicode Η character are set to the global scope because they were not defined as local to the functions with the var keyword. While they look similar, they are actually 2 different variables with 2 different values. Using Ctrl+F in your browser you will find that Η shows up significantly less than H on this page.
此处引用另一个方法:
import java.lang.reflect.Field;
public class Main {
public static void main(String[] args) throws Exception {
Class cache = Integer.class.getDeclaredClasses()[0];
Field c = cache.getDeclaredField("cache");
c.setAccessible(true);
Integer[] array = (Integer[]) c.get(cache);
array[132] = array[133]; //看这里!!
System.out.printf("%d",2 + 2);
}
}
此处是把在IntegerCache
中保存4
的实际值的地方把4
的实际值换为5
的实际值~
仿那个Python的
/******<看不见看不见看不见>******/
function Number(v) { return ~v }
/******</看不见看不见看不见>******/
alert(Number(Number(2) + Number(2))) // => 5
提供一个 swift 的写法吧 ... 算是现学现卖了 ...
@infix func + (pt0: Int, pt1: Int) -> Int {
return 5
}
println( 2 + 2 )
题主骗得一手好人 \^o^/
第二个H明明是
U+0397
Greek capital letter eta!!!我说为什么file命令的输出是
HTML document, UTF-8 Unicode text
而不是ASCII text
……** 这个问题第一下就想到了C++的运算符重载……