在你看来,你遇到过的最令人惊讶、最怪异、最奇怪或最“WTF”的语言特性是什么?
请每个回答只回答一个特征。
在你看来,你遇到过的最令人惊讶、最怪异、最奇怪或最“WTF”的语言特性是什么?
请每个回答只回答一个特征。
当前回答
Perl中的字符串数学非常奇怪。
$ perl -E '$string = "a"; $string++; say $string'
b
$ perl -E '$string = "abc"; $string++; say $string'
abd
$ perl -E '$string = "money"; $string++; say $string'
monez
$ perl -E '$string = "money"; $string--; say $string'
-1
其他回答
下面的答案与这个关于数组的答案类似。
在Powershell中,像其他动态语言一样,字符串和数字在某种程度上是可以互换的。然而,Powershell无法下定决心。
PS> $a = "4" # string
PS> $a * 3 # Python can do this, too
444
PS> 3 * $a # Python doesn't do it this way, string repetition is commutative
12
PS> $a + 3 # Python gives a mismatched types error
43
PS> 3 + $a # Python would give an error here, too
7
如果变量是整数而不是字符串,则操作是可交换的。
PS> $a = 4 # integer
PS> $a * 3
12
PS> 3 * $a
12
PS> $a + 3
7
PS> 3 + $a
7
当有疑问时,做一个模型:
PS> $a = "4"
PS> $b = 3
PS> [int] $a * [int] $b
12
你也可以使用[float]。
我喜欢这类东西在JavaScript中很好的事实:
var futureDate = new Date(2010,77,154);
alert(futureDate);
结果是距离2010年第0个月的第0天77个月零154天,即2016年11月1日
在JavaScript(和Java)中,你可以转义这样有趣的字符:
var mystring = "hello \"world\"";
如果你想把回车放到字符串中,那是不可能的。你必须像这样使用\n:
var mystring = "hello, \nworld";
这是正常的,也是意料之中的——至少对于一种编程语言来说。奇怪的是你也可以像这样转义一个实际的回车:
var mystring = "hello, \
world";
C的多个名称空间:
typedef int i;
void foo()
{
struct i {i i;} i;
i: i.i = 3;
printf( "%i\n", i.i);
}
或与字符:
typedef char c;
void foo()
{
struct c {c c;} c;
c: c.c = 'c';
printf( "%c\n", c.c);
}
在Java中,
Int x = 010;
这将x赋值为8。
在Java中,任何前面带0的整数都被假定为八进制。