24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1172  |  回复: 4

mocito

铜虫 (初入文坛)

[求助] 关于perl 数组的一个小问题。

先把问题的code写一下,
$value = 2;
print ( $value, $value**3, $value++ );

结果是,
382

问题,为什么结果不是283?

刚看到数组这一部分,之前也只零零碎碎的接触到一些 c++,matlab 的基础编程,所以现在完全不知道问题可能出在哪里。。。

[ 发自手机版 http://muchong.com/3g ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

a475772910

金虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
mocito: 金币+5, ★★★很有帮助 2013-08-08 16:03:34
#!/usr/bin/perl
$value = 2;
$a=$value;
$b=$value**3;
$c=++$value;
print ( $a, $b,$c );
这样就好了   283  
直接写 $value, $value**3, $value++。  $value会随着$value++变化,还有就是$value++和++$value引用时是不一样的  第一个直接引用$value值,第二个引用的是+1后的值。
2楼2013-08-08 12:08:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mocito

铜虫 (初入文坛)

引用回帖:
2楼: Originally posted by a475772910 at 2013-08-08 16:08:34
#!/usr/bin/perl
$value = 2;
$a=$value;
$b=$value**3;
$c=++$value;
print ( $a, $b,$c );
这样就好了   283  
直接写 $value, $value**3, $value++。  $value会随着$value++变化,还有就是$value++和++$ ...

谢谢~这个我试了下,确实可以。
print ( $value, $value**3, $value++ );
里面 第一位上的$value是随着第三位上的$value++变化的,而第二位的$value为什么是2的三次方呢? 我感觉第一位上和第二位上的$value 应该是等价的吧? 要不然就会产生 结果 “392” 了。
我在想是不是跟运算的层级有关,乘法先执行,然后加法,但又觉得在数组中先后顺序应该是按照它的排位先后来的……
3楼2013-08-08 16:02:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

davidyjun

银虫 (初入文坛)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
mocito: 金币+15, ★★★★★最佳答案, 好像是这么回事,谢谢啦~ 2013-08-16 12:41:36
其实print也可以认为是函数或子程序,它的运算是有层级的。
4楼2013-08-16 12:08:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

万孝莉

新虫 (小有名气)

引用回帖:
3楼: Originally posted by mocito at 2013-08-08 16:02:48
谢谢~这个我试了下,确实可以。
print ( $value, $value**3, $value++ );
里面 第一位上的$value是随着第三位上的$value++变化的,而第二位的$value为什么是2的三次方呢? 我感觉第一位上和第二位上的$value 应该 ...

运算符在使用时是有优先级和方向性的
“++”的优先级高,结合性是左
“,”符的优先级低,但结合性是右;
所以
print ( $value, $value**3, $value++ );
先运算$value++(究竟++什么时候执行没见到文档说明)
然后执行$value**3(这里使用的$value是否执行了++,就要看++了)
最后执行$value;
求解……
5楼2013-08-27 20:40:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 mocito 的主题更新
信息提示
请填处理意见