Olvidar incluir el archivo de cabecera matemático, al usar
las funciones matemáticas de biblioteca, puede causar resultados
extraños.
Omitir el tipo de valor de regreso en una definición de función
causa un error de sintaxis, si el prototipo de función especifica
un regreso de tipo distinto a int.
Olvidar regresar un valor de una función, que se supone debe
regresar un valor, puede llevar a errores inesperados. El estándar
ANSI indica que el resultado de esta omisión queda indefinido.
Regresar un valor de una función, cuyo tipo deregreso se
ha declarado como void, causar un error de sintaxis.
Declarar par metros de función del mismo tipo como float
x, y en vez de float x, float y. La declaración de parámetros
float x, y convertiría de hecho a y en un parámetro
de tipo int, porque int es el valor por omisión.
Es un error de sintaxis colocar un punto y coma después del
paréntesis derecho que encierra una lista de parámetros
de una definición de función.
Volver a definir dentro de la función un parámetro
de función como variable local es un error de sintaxis.
Definir una función en el interior de otra función
es un error de sintaxis.
Olvidar el punto y coma al final del prototipo de función
hará que ocurra un error de sintaxis.
Convertir de un tipo de datos superior en la jerarquía de
promoción a un tipo inferior, puede modificar el valor del
dato.
Olvidar un prototipo de función generar un error de
sintaxis, si el tipo de regreso de la función no es int y
la definición de función aparece después de
la llamada a la función dentro del programa. De lo contrario,
el olvidar un prototipo de función puede causar un error
en tiempo de ejecución o un resultado inesperado.
Usar srand en vez de rand para generar números aleatorios.
Usar múltiples especificadores de clase de almacenamiento
para un identificador. Sólo puede ser aplicado un especificador
de clase de almacenamiento a un identificador.
Utilizar accidentalmente el mismo nombre para un identificador en
un bloque interno, que se haya usado para un identificador en un
bloque externo, cunado de hecho, el programador desea que durante
la duración del bloque interno el identificador del bloque
externo esté activado.
Olvidar el regresar un valor de una función recursiva cuando
se requiere cuando se requiere de uno.
Omitir ya sea el caso base, o escribir el paso de recursión
de forma incorrecta, de tal forma que no converja al caso base,
causando recursión infinita, y agotado de forma eventual
la memoria. Esto es análogo al problema de un ciclo infinito
en una solución iterativa
(no recursiva). La recursión infinita también puede
ser causada al proporcionarle una entrada no esperada.
Escribir programas que dependen del orden de evaluación de
los operandos de operadores distintos que &&, ||, ?:, y
el operador coma (,) puede llevar a errores, porque los compiladores
no necesariamente evalúan los operandos en el orden en que
los programas esperan.
Hacer que accidentalmente una función no recursiva se llame
a sí misma, ya sea directa o indirecta a través de
otra función.
Intentar utilizar el operador de selección de miembro (.)
con un apuntador a un objeto (el operador de selección de
miembro sólo puede ser utilizado con un objeto o con un referencia
a un objeto).
Mezclar asignación dinámica de memoria del tipo new
y delete con asignación dinámica de memoria del tipo
malloc y free: el espacio creado por malloc no podrá
ser liberado por delete; los objetos creados mediante new no podrán
ser borrados por free.
|