在你看来,你遇到过的最令人惊讶、最怪异、最奇怪或最“WTF”的语言特性是什么?
请每个回答只回答一个特征。
在你看来,你遇到过的最令人惊讶、最怪异、最奇怪或最“WTF”的语言特性是什么?
请每个回答只回答一个特征。
当前回答
Duff的C语言设备!
在C语言中,可以将do/while语句与switch语句交错使用。下面是memcpy使用此方法的示例:
void duff_memcpy( char* to, char* from, size_t count ) {
size_t n = (count+7)/8;
switch( count%8 ) {
case 0: do{ *to++ = *from++;
case 7: *to++ = *from++;
case 6: *to++ = *from++;
case 5: *to++ = *from++;
case 4: *to++ = *from++;
case 3: *to++ = *from++;
case 2: *to++ = *from++;
case 1: *to++ = *from++;
}while(--n>0);
}
}
其他回答
ActionScript 3:
当一个对象被它的接口使用时,编译器不识别从object继承的方法,因此:
IInterface interface = getInterface();
interface.toString();
给出一个编译错误。 解决方法是将类型转换为Object
Object(interface).toString();
PHP:
. 和+运算符。它有其合理的解释,但“a”+“5”= 5仍然显得尴尬。
Java(以及任何IEEE754的实现):
System.out.println(0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1);
输出0.9999999999999999
在JavaScript中:
1 / 0; // Infinity
1 / -0; // -Infinity
我不敢说XML是一种编程语言,但它不是贴近我们的内心吗?: -)
在我看来,XML中最奇怪的特性是以下是一个格式良好的文档:
<_....>
</_....>
下面是允许连续点的NT-Name的词法定义。
在FoxPro中,如果我没记错的话,每个命令都可以缩写为4个字符,其他的都被忽略,所以READ, READY, READINESS都是一样的——前4个字符之后的都被忽略。向我解释的人喜欢这个功能,但我觉得它很恐怖。
任何东西都会自动将任何类名和成员名复数或单数。
例如,Linq-to-Sql