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

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


当前回答

在我看来,在c#中能够将超出范围的整数转换为枚举是非常奇怪的。想象一下这个枚举:

enum Colour
{
    Red = 1,
    Green = 2,
    Blue = 3
}

现在,如果你写:

Colour eco;
eco = (Colour)17;

编译器认为这很好。还有运行时。

请看这里了解更多细节。

其他回答

在PHP中:

for ($s="a";$s<="z";$s++) echo $s.' ';

这将是:

a b c d e .. .w x y z aa ab ac ad .. ay az ba bb bc ... by bz ca cb ... yz za zb ... zx zy zz

在c#中: A = cond ?B: c; 如果“b”和“c”是“赋值不兼容”,你永远不会得到结果,即使“a”是对象。 它是ms中最常用和最愚蠢的实现运算符。有关比较,请参阅D语言中的实现(关于类型推断的注意)。

在C语言中,

 int x = 1;
 int y = x++ + ++x;
 printf("%d", y);

是模棱两可的,打印什么取决于编译器。编译器可以在计算++x之前或在语句的末尾存储x++的新值。

英语中的虚拟语气。

等等,你是说编程语言吗?然后在C中使用(宏)绕过宏()的预处理器#定义。例如,如果有人使用#define free(…),(free)(…)将与free(…)不同。

Commodore BASIC的命令快捷方式。基本上大多数命令都有一个缩写形式,通常是第一个字母+ (shift+第二个字母)。但是因为C64上的字符集默认都是大写的,这些命令看起来就像奇怪的符号。下面是一个hello world的简短例子:

也许有人有更好的例子,更有实质内容,但对于长程序来说,这看起来完全是荒谬的。

以下是缩略语列表:http://www.c64-wiki.com/index.php/BASIC_keyword_abbreviation