|
|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 张文汽车 于 2016-7-30 18:19 编辑 3 \/ Y- l D7 e6 Y
TCL脚本语言是一种基于字符串命令的语言,
% m1 l& p5 x* R3 k, J" v 数据类型会根据其使用场合进行自动的转换,
" F$ d0 b; Z: J% b. g 这也是TCL语言最大的一个特点之一。
# O$ F1 k/ ` L( o: f4 W 那么这种自动转换一不注意可能不会得到我们想要的结果,
. N1 i! Y+ G1 {; y 下面看一个实例: - #首先我们定义两个变量,都是整数的
4 X$ a3 d+ t0 ]5 n! r+ ~ - set a 10. d. \$ J1 L, X) k
- set b 3 m% d; g; m2 q* F" ?1 j
- #然后我们再定义一个变量,来接收这两个整数相除得到的结果1 x8 E' }' k. T. W) |4 R& x
- set c [expr $a/$b]
& z2 }* B; V7 @7 n# [ - #接下来我们输出c的值
+ ^8 t" `( |& g6 T - puts $c
- t' u: o+ s8 }$ w( z. h
复制代码 那么现在问题来了,按我们正常的思路来理解的话,
" l8 r- _' r" } C的值应该是3.3333....,
3 i" D6 N/ M% O) r 但是我们看到输出的结果却是3 , z- `- @3 p, t0 A/ E/ @# G% R9 A2 b
& z( S& @5 s: t" }2 \/ I$ `8 w2 O
这是为什么呢?
( W8 N# X$ @- }9 _+ C$ @5 Q3 |3 ]1 P! o; |+ O' v
这是因为我们定义的a和b都是一个整数变量,( I$ G4 m; `0 a4 l
那么对于两个整数变量的操作得到的结果也将是一整数,& ^1 j' D: @% c' ]& Q s
所以我们看得到的C的值是3也就不奇怪了。/ t" J1 A5 a4 F
所以我们在定义变量的时候一定要明确变量的数据类型,( v( K& b4 }) W4 \5 F
不然可能会得到意想不到的结果。5 A' O3 N( W& [) m
以下是修正后的程式( ~' L# |( m- e3 u. V
- #首先我们定义两个变量,都是整数的2 }7 t) P$ g/ ^# Z! X" g
- set a 10.% ]' l5 r5 o" v* N% n! X$ H3 \* r
- set b 3.. G7 Q( k1 ` H" P0 {. @* t8 j
- #然后我们再定义一个变量,来接收这两个整数相除得到的结果0 d" D0 b* f: P [
- set c [expr $a/$b]
* w( o( `6 E4 {) c4 w! t - #接下来我们输出c的值
$ o4 R, R% C/ ? F1 X( d - puts $
9 Y1 B. e' s* x
复制代码 快去看看你没有这样的问题吧!!!
. d+ d5 W6 z1 S$ `, x! F6 f
- Z1 J! E% b+ F0 z) e |
|