In programming, a gotcha is a valid construct in a system, program or programming language that works as documented but is counter-intuitive and almost invites mistakes because it is both easy to invoke and unexpected or unreasonable in its outcome.
if (a = b) code;
It is syntactically valid: it puts the value of
a and then executes
a is non-zero. Sometimes this is even intended. However most commonly it is a typo: the programmer probably meant
if (a == b) code;
b are equal. Modern compilers will usually generate a warning when encountering the former construct (conditional branch on assignment, not comparison), depending on compiler options (e.g., -Wall option for gcc). To avoid this gotcha, there is a recommendation to keep the constants in the left side of the comparison, e.g.
42 == x rather than
x == 42. This way, using
= instead of
== will cause a compiler error (see yoda conditions). Many kinds of gotchas are not detected by compilers, however.
Manage research, learning and skills at defaultLogic. Create an account using LinkedIn or facebook to manage and organize your IT knowledge. defaultLogic works like a shopping cart for information -- helping you to save, discuss and share.