我有代码打印出前9个平方数字:
#!/usr/local/bin/perl
for($i=1;$i<10 ;$i++ )
{
   printf $i^2 . "\n";
}
但出于某种原因,这只输出30167451011.我如何正确地对数字进行平方?
#!/usr/local/bin/perl
for ( my $i = 1; $i < 10; $i++ ) {
    print $i**2 . "\n";
}
这将输出:
1
4
9
16
25
36
49
64
81
小智 6
为了解释原始代码中发生的事情,你需要知道3件事:首先,^是perl中的XOR运算符,因为它是C中的XOR运算符.
1 ^ 2 = 3
2 ^ 2 = 0
3 ^ 2 = 1
4 ^ 2 = 6
...
其次,^运算符的优先级低于字符串连接运算符,.因此$i^2 . "\n"相当于$i ^ (2 . "\n")
第三,perl根据需要在字符串和数字之间进行转换.该.运营商需要双方的字符串,所以2被转换成"2"与串联起来的"\n",成为字符串"2\n".
然后^操作员需要两侧的数字,因此字符串"2\n"被转换为数字 - 通过获取前导数字部分并丢弃其余部分.所以结果$i ^ 2 . "\n"最终是一样的$i ^ 2.你"\n"没有任何效果,所以所有结果都打印在他们之间.3,0,1,6,...成为3016...
| 归档时间: | 
 | 
| 查看次数: | 7305 次 | 
| 最近记录: |