Tcl expr正在给出意外的结果
expr为4个字符(t、n、f、y)提供意外结果。如果你在做进一步的计算。然后代码被破坏了。我不明白为什么会这样Tcl expr正在给出意外的结果,tcl,Tcl,expr为4个字符(t、n、f、y)提供意外结果。如果你在做进一步的计算。然后代码被破坏了。我不明白为什么会这样 % expr (F) F % expr (F)*1 can't use non-numeric string as operand of "*" 以及 下面是字符的文件:t,n,f,y。没有由这些字符命名的变量。它应该标记未找到变量或其他一些有效错误。我遗漏了什么吗?我想你是在期待expr出什么问题 该命令用于计算表达式。它可以对数字进行算术运算,比较字符串或数字,执行一些数学函
% expr (F)
F
% expr (F)*1
can't use non-numeric string as operand of "*"
以及
下面是字符的文件:t,n,f,y。没有由这些字符命名的变量。它应该标记未找到变量或其他一些有效错误。我遗漏了什么吗?我想你是在期待
expr
出什么问题
该命令用于计算表达式。它可以对数字进行算术运算,比较字符串或数字,执行一些数学函数,等等
你的台词
% expr (F)
% expr (t)
% expr (n)
% expr (f)
% expr (y)
它们都做同样的事情:它们要求对优先级更高的文本字符串(大括号)执行no操作。所以没有其他内容,expr
返回字符串本身
在
但是,您正在尝试将字符串乘以数字:这是一个未定义的操作。实际上,expr
给出了一个错误,指出*
的一个操作数是非数字字符串(哪个数字F
应该表示?)
使用诸如F
或y
之类的文本字符串,您可以要求进行字符串比较。例如,您可以执行以下操作:
% expr F < f
1
等等
因此,
expr
并没有产生任何意外的结果,但可能您的期望是错误的。我认为您对expr
的期望是错误的
The [expr] conditions of commands such as [if] and [while] expect the expression to evaluate to a boolean, i.e., an integer or one of the following string values:
true, on, yes
false, off, no
该命令用于计算表达式。它可以对数字进行算术运算,比较字符串或数字,执行一些数学函数,等等
你的台词
% expr (F)
% expr (t)
% expr (n)
% expr (f)
% expr (y)
它们都做同样的事情:它们要求对优先级更高的文本字符串(大括号)执行no操作。所以没有其他内容,expr
返回字符串本身
在
但是,您正在尝试将字符串乘以数字:这是一个未定义的操作。实际上,expr
给出了一个错误,指出*
的一个操作数是非数字字符串(哪个数字F
应该表示?)
使用诸如F
或y
之类的文本字符串,您可以要求进行字符串比较。例如,您可以执行以下操作:
% expr F < f
1
等等
因此,expr
不会产生任何意外的结果,但可能您的期望是错误的
The [expr] conditions of commands such as [if] and [while] expect the expression to evaluate to a boolean, i.e., an integer or one of the following string values:
true, on, yes
false, off, no
我相信t,y,f和n是这些的捷径
我相信t、y、f和n是实现这些目标的捷径。您使用的是哪个版本的TCL?TCL 8.5版Linuk平台您使用的是哪个版本的TCL?TCL 8.5版Linuk平台您肯定是对的!我没有注意到使用其他字符串会产生错误。实际上,
expr f?5:7
给出7,而expr y?5:7
给出5个唯一的布尔文字前缀。(我可能是那个输入代码的人,但有时结果可能出乎意料!)你肯定是对的!我没有注意到使用其他字符串会产生错误。实际上,expr f?5:7
给出7,而expr y?5:7
给出5个唯一的布尔文字前缀。(可能是我把代码放进去的,但有时结果会出乎意料!)