← eetop.cn_Perl语言入门(第四版小骆驼书)

推荐答案 测试一下

10 undef 值

问答题 中等 经典问答问答题

参考答案

通常不会有什么严重的后果 。变量在第一次赋值前有一个特殊值 undef,按 照Perl来说就是 :“这里什么也没有 ,请继续”。如果这里的 “什么也没有 ”是一些“数字”,则表现为 0。如果是“字符串”, 则表现为空串 。但undef既非数字也非字符串 ,它是另一种标量类型 。 由于 undef在需要数字的地方可以自动转化为 0,因此可以如下 的写代码 : #将一些基数相加 #n = 1; while($n < 10){ $sum += $n; $n +=2;#下一个奇 数 } print “The total was $sum. \n”; 上述代码在 $sum未初始化 (undef)时也能正确执行 。第一次执行时 ,循环体中第一行 $n值为 1,因此将 1加给 $sum。而$sum 就像已经有值 0,因为 $sum值为 undef。现在其值 1。之后,由于其已被初始化 ,其过程同普通的类似 。 同样的,针对字符串的情形 : $string .= “more t ext\n” ; 如果 $string为undef;则是空串后接 “more text \n”。反之,则是其值后接 “more text \n”。 Perl程序员在使用新变量时 ,经常不初始化 ,从而将变量作为 0或者空串使用 。 许多操作当参数不恰当时返回 undef。如果没做特殊处理 ,通常会得到 0或者空串 。实践中,这几乎不会有什么问题 。实际 上,许多程序员利用这种性质 。但应当知道如果警告是打开的 ,那Perl在你不恰当的使用未定义值时会提醒你 。例如,将 一个 undef的变量赋给另一个变量不会有什么问题 ,但如果 print某个未定义的值则将引起警告 。 Perl语言入门 (第四版 ) blei@163.com 37/201 9/21/20062.1.1 defined 函数 能返回 undef的操作之一是行输入操作 ,<STDIN> 。通常,它会返回文本中的一行 。但如果没有更多的输入 ,如到了文件 的结尾,则返回 undef◆。要分辨其是 undef还是空串 ,可以使用 defined函数,它将在为 undef时返回 false,其余返回 true。 ◆事实上,从键盘输入 ,不会有 “end-of-file”,但其可重定向到文件中 再输入。或者用户可能输入某些键 ,而系统将其作为 end-of-file看待。 $madonna = <STDIN >; If ($defined ($madonna)){ print “The input was $madonna ”; }else{ print “No input available! \n”; } 如果想声明自己的 undef值,可以使用 undef: $madonna = undef ; #同$madonna 从未被初始化一样 。

涉及知识点

  • Verilog变量默认值(wire Z, reg X)
  • X态传播与仿真不确定性
  • 综合对未初始化变量的处理
  • 初始值设置与仿真规范
← 上一题
登录后反馈错题
下一题 →