Function 打印(2&;2)有什么问题>&燃气轮机;1.
我只是想知道那段代码会发生什么。 为什么直接打印时结果不正确,为什么忽略换行符Function 打印(2&;2)有什么问题>&燃气轮机;1.,function,perl,bit-manipulation,expression,Function,Perl,Bit Manipulation,Expression,我只是想知道那段代码会发生什么。 为什么直接打印时结果不正确,为什么忽略换行符 user@host_09:22 AM:perl 打印2>>1,“\n”; 打印2和2,“\n”; 打印(2和2)>>1,“\n”; 1. 2. 2user@host_09:22 AM:perl $a=(2&2)>>1; 打印“$a\n”; 1. 当您打印带有警告的内容时,它会变得清晰(er) 说 或者,适当地调用print,并用括号括住整件事 perl -we'print((2 & 2) >> 1
user@host_09:22 AM:perl
打印2>>1,“\n”;
打印2和2,“\n”;
打印(2和2)>>1,“\n”;
1.
2.
2user@host_09:22 AM:perl
$a=(2&2)>>1;
打印“$a\n”;
1.
当您打印带有警告的内容时,它会变得清晰(er)
说
或者,适当地调用print
,并用括号括住整件事
perl -we'print((2 & 2) >> 1, "\n")'
两者都使用1
打印一行
中提到了这一点,并在和中进行了更全面的记录。有关另一个相关示例,请参见
† 它还警告说,这可能是一个错误——在帕伦斯之前有一个空格;没有空间,就没有警告。当您打印带有警告的内容时,它会变得清晰(er) 说 或者,适当地调用
print
,并用括号括住整件事
perl -we'print((2 & 2) >> 1, "\n")'
两者都使用1
打印一行
中提到了这一点,并在和中进行了更全面的记录。有关另一个相关示例,请参见
† 它还警告说,这可能是一个错误——在帕伦斯之前有一个空格;没有空格,就没有警告。Perl将括号解释为函数参数标记,您可以用
perl -MO=Deparse,-p -e 'print (2 & 2) >> 1'
输出:
(print(2) >> 1);
标准方法是在左括号前面加一个+
:
print +(2 & 2) >> 1
Perl将括号解释为函数参数标记,您可以使用
perl -MO=Deparse,-p -e 'print (2 & 2) >> 1'
输出:
(print(2) >> 1);
标准方法是在左括号前面加一个+
:
print +(2 & 2) >> 1
打开警告(
perl-w
)只是为了完整:对于一般情况,您应该使用警告模块(使用警告;
或-Mwarnings
),而不是-w
,因为-w
也会影响您无法控制的模块。打开警告(perl-w
)为了完整起见:对于一般情况,您应该使用警告模块打开警告(使用警告;
或-Mwarnings
),而不是-w
,因为-w
也会影响您无法控制的模块。当然,您也可以在参数周围添加括号:打印((2&2)>>1,“\n”)
@DavidKrupička欢迎:)如果有问题,请告诉我,或者您也可以在参数周围添加括号,当然:print((2&2)>>1,“\n”)
@DavidKrupička Welcome:)如果出现问题,请告诉我,添加省略的paren更为惯用。但是是的,省略它们的惯用方法是使用一元+
。值得注意的是,一元+
可以处理任何类型的值,而不仅仅是数字。它实际上对传递给它的值没有影响。我喜欢-MO=Deparse建议,但如果你不介意的话,我将zdim的帖子标记为答案,因为它稍微更详细。添加省略的paren更惯用。但是是的,省略它们的惯用方法是使用一元+
。值得注意的是,一元+
可以处理任何类型的值,而不仅仅是数字。我喜欢-MO=Deparse的建议,但是如果你不介意的话,我把zdim的帖子标记为答案,因为它稍微详细一点。