在你看来,你遇到过的最令人惊讶、最怪异、最奇怪或最“WTF”的语言特性是什么?

请每个回答只回答一个特征。


当前回答

这是我最喜欢的一个,你可以在Java中不使用main()来执行println。

这将编译和运行,给出println,但也有一个异常(java.lang。NoSuchMethodError:主要)

class Test {
    static {
        System.out.println("I'm printing in Java without main()");
    }
}

其他回答

在c++中,你可以从空指针调用静态方法——看!

class Foo {
  public:
    static void bar() {
      std::cout << "WTF!?" << std::endl;
    }
};

int main(void) {
  Foo * foo = NULL;
  foo->bar(); //=> WTF!?
  return 0; // Ok!
}

这句话让我很意外……

在c++中,创建受保护抽象虚基纯虚私有析构函数的能力。

这是从受保护的抽象虚拟基继承的纯虚拟私有析构函数。

IOW,只能由类的成员或友元调用的析构函数(private),在声明它的基类(抽象基)中赋值0(纯虚),稍后将在以受保护的方式共享多重继承基(虚基)的派生类中定义/重写它。

PHP (?)

第一:(未设置)类型转换。

$a = 1;
$b = (unset)$a;
var_dump($a); // 1
var_dump($b); // NULL

用法:http://www.php.net/manual/en/language.types.type-juggling.php # 89637

第二:= NULL和unset()函数之间的区别。

$c = 10;
$d = &$c;
$c = NULL;
var_dump($c); // NULL
var_dump($d); // NULL


$e = 10;
$f = &$e;
unset($e);
var_dump($e); // NULL
var_dump($f); // 10 - WTF?

Oracle有几个SQL WTF问题。

Oracle将空字符串处理为null。 在“<>”比较中处理空值。 创建表WTF(键数为主键,动物varchar2(10)); 插入WTF值(1,'dog'); Insert into WTF values (2, "); Insert into WTF values (3,'cat'); Select * from WTF where animal <> 'cat';

唯一返回的行是(1,'dog')行。

PHP的列表构造:

$array = array(0,1,2);
list (,,$x) = $array;
$x == 2; // true