BUSCAR
INDICE
INDICE DEL TEMA
OBJETIVOS
TEORIA
PALABRAS RESERVADAS
GLOSARIO
EJERCICIOS
RESUELTOS
AUTOEVALUACION
PROPUESTOS
ERRORES
ESTADISTICAS
INICIO
FAQS
LINKS
RECOMIENDANOS
QUIENES SOMOS
MAPA DEL WEB
COLABORAR
Tema 14 Más sobre Funciones
Errores Comunes de Programación


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.