Em C e C ++, é muito fácil escrever o código a seguir com um erro grave.
char responseChar = getchar();
int confirmExit = 'y' == tolower(responseChar);
if (confirmExit = 1)
{
exit(0);
}
O erro é que a instrução if deveria ter sido:
if (confirmExit == 1)
Conforme codificado, ele sai sempre, porque confirmExit
ocorre a atribuição da variável e confirmExit
é usado como resultado da expressão.
Existem boas maneiras de evitar esse tipo de erro?
if (confirmExit)
.
a = b
ou a == b
dentro de uma condicional.