From 03716dfee8f0f0df26a8c56e6a2b3ceeb9319dbc Mon Sep 17 00:00:00 2001 From: dkf Date: Wed, 16 May 2012 23:16:14 +0000 Subject: [Bug 3525462]: Document what relational operators really do with string args. --- ChangeLog | 6 ++++++ doc/expr.n | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1615237..fad0871 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2012-05-17 Donal K. Fellows + + * 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-13 Jan Nijtmans * win/tclWinDde.c: Protect against receiving strings without ending \0, diff --git a/doc/expr.n b/doc/expr.n index e529925..4c8903a 100644 --- a/doc/expr.n +++ b/doc/expr.n @@ -364,6 +364,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, .VS 8.4 except in the case of the \fBeq\fR and \fBne\fR operators. .VE 8.4 @@ -374,11 +375,10 @@ a string using the C \fIsprintf\fR format specifier For example, the commands .CS \fBexpr {"0x03" > "2"}\fR -\fBexpr {"0y" < "0x12"}\fR +\fBexpr {"0y" > "0x12"}\fR .CE 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 isn't generally a good idea to use operators like \fB==\fR when you really want string comparison and the values of the -- cgit v0.12