diff options
author | dkf <donal.k.fellows@manchester.ac.uk> | 2012-05-16 23:23:29 (GMT) |
---|---|---|
committer | dkf <donal.k.fellows@manchester.ac.uk> | 2012-05-16 23:23:29 (GMT) |
commit | 9168859a32d37cb9442df3de940de98a094c664e (patch) | |
tree | 31f1f431f681cb9ee80d8c4b1110804f4b4ce10f | |
parent | 6155ef4e5cc74b11bfb0eba745e4e9c9c5e5f6be (diff) | |
parent | 95a02f829d476464637599f39be7aeaa335c70ad (diff) | |
download | tcl-9168859a32d37cb9442df3de940de98a094c664e.zip tcl-9168859a32d37cb9442df3de940de98a094c664e.tar.gz tcl-9168859a32d37cb9442df3de940de98a094c664e.tar.bz2 |
[Bug 3525462]: Document what relational operators really do with string args.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | doc/expr.n | 6 |
2 files changed, 9 insertions, 3 deletions
@@ -1,3 +1,9 @@ +2012-05-17 Donal K. Fellows <dkf@users.sf.net> + + * doc/expr.n: [Bug 3525462]: Corrected statement about what happens + when comparing "0y" and "0x12"; the previously documented behavior was + actually a subtle bug (now long-corrected). + 2012-05-16 Donal K. Fellows <dkf@users.sf.net> * generic/tclCmdAH.c (TclMakeFileCommandSafe): [Bug 3445787]: Improve @@ -326,6 +326,7 @@ returns \fB4.0\fR, not \fB4\fR. String values may be used as operands of the comparison operators, although the expression evaluator tries to do comparisons as integer or floating-point when it can, +i.e., when all arguments to the operator allow numeric interpretations, except in the case of the \fBeq\fR and \fBne\fR operators. If one of the operands of a comparison is a string and the other has a numeric value, a canonical string representation of the numeric @@ -337,12 +338,11 @@ is that produced by the \fB%g\fR format specifier of Tcl's .PP .CS \fBexpr\fR {"0x03" > "2"} -\fBexpr\fR {"0y" < "0x12"} +\fBexpr\fR {"0y" > "0x12"} .CE .PP both return 1. The first comparison is done using integer -comparison, and the second is done using string comparison after -the second operand is converted to the string \fB18\fR. +comparison, and the second is done using string comparison. Because of Tcl's tendency to treat values as numbers whenever possible, it is not generally a good idea to use operators like \fB==\fR when you really want string comparison and the values of the |