|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 张文汽车 于 2016-7-30 18:19 编辑 0 `6 G$ a7 H+ ?. O) `
TCL脚本语言是一种基于字符串命令的语言,6 O( m! R; l+ R$ n
数据类型会根据其使用场合进行自动的转换,
8 H) _+ v: \; W. L6 R7 L! h' W 这也是TCL语言最大的一个特点之一。
* P# O& |0 R+ M8 |# C/ c) B% L 那么这种自动转换一不注意可能不会得到我们想要的结果, W2 g* l O( K8 q' f8 \
下面看一个实例: - #首先我们定义两个变量,都是整数的
( ?8 k$ l: B7 i& k/ } - set a 10+ M2 ^+ T( c6 b
- set b 3
( S1 _* N; y5 l0 c& l4 l/ A, w3 j - #然后我们再定义一个变量,来接收这两个整数相除得到的结果
) r- W! b; A" g% ] - set c [expr $a/$b]% a; k- `1 b5 b( y0 K/ J
- #接下来我们输出c的值( o& V2 P* }: D% n
- puts $c8 } [4 i/ X' `" {- a
复制代码 那么现在问题来了,按我们正常的思路来理解的话,$ J' o0 ^3 J8 L8 b7 e4 Q
C的值应该是3.3333....,
0 x9 V5 y( W: s- x( x 但是我们看到输出的结果却是3 ,% e; o# ~0 H* _: `6 s9 N' j
) M* v* @" ? O6 a9 t
这是为什么呢? 7 ^- R6 q! A* G$ J- _/ M0 i% c* K
+ v' o; ^9 r6 {- ]* @# U: K 这是因为我们定义的a和b都是一个整数变量,
/ I) _8 K# q6 w5 U7 i$ _. ` 那么对于两个整数变量的操作得到的结果也将是一整数,0 H! W" H& d6 \( C" K' M+ c" r
所以我们看得到的C的值是3也就不奇怪了。+ ]9 B# o p9 N$ L4 j$ Y& q
所以我们在定义变量的时候一定要明确变量的数据类型,
% D- f+ W2 S8 Y, v$ ~/ x. f 不然可能会得到意想不到的结果。( O" m& g% B: P
以下是修正后的程式
: K4 S% X- \# ]: t- i- #首先我们定义两个变量,都是整数的7 x" t$ g1 G+ _4 Y7 H+ K
- set a 10.
9 t% c7 J# q2 l; h# l5 F9 n1 \ - set b 3.4 X( e) j' Y! f5 ~( J8 ^
- #然后我们再定义一个变量,来接收这两个整数相除得到的结果
; e5 t" m( G1 c A - set c [expr $a/$b]" r3 h$ U' f3 g0 k( \2 W
- #接下来我们输出c的值
& N' T9 }/ e# w+ q5 B7 L, S - puts $% `% I' d, m6 c2 }2 D4 k6 N0 |5 w
复制代码 快去看看你没有这样的问题吧!!!$ z; T& _& n$ E# Z& U
3 A; \! U7 _! ` A$ Q% W8 ^
|
|