por lo que entiendo la instrucción i++ No es lo mismo que la i = i + 1, claro... hacen la misma cosa pero internamente la instruccion i++ incrementa directamente el valor de i en 1 mientras que la i = i + 1 primero internamente suma el valor de i con 1 y lo deja en otra variable para luego asignarselo a i nuevamente... osea... es mas lento.yo se bien lo que es i++ o i-- o i+=5solo era un ejemplo...lo que pasa es que he visto codigo en c++ muy raro y que supuestamente es la forma mas directa de hacer cosas... un poco para allá va apuntada mi pregunta...
bueno, de abreviaciones está lleno el C... puede parecer código "raro" pero es precisamente esas capacidades y facilidades que han hecho tan popular al C y sus descendientes.
i++ No es lo mismo que la i = i + 1, claro... hacen la misma cosa pero internamente la instruccion i++ incrementa directamente el valor de i en 1 mientras que la i = i + 1 primero internamente suma el valor de i con 1 y lo deja en otra variable para luego asignarselo a i nuevamente... osea... es mas lento.
Qué no se supone que estábamos hablando de forma de escribir ("codificar") en C, y no de como mostrar datos en pantalla?? ... pero bueno., estoy de acuerdo con mi buen ETERNAL IDOL pues gotoxy no es estandar (pero que bien ayuda en windows, jajaja )!!
a=b?c:d;P.D.2. Si quieres tener todos tus valores iniciados a 0 si trabajas en windows existe una funcion del sistema operativo, un malloc especial no recuerdo exactamente el nombre pero solo cambia una o dos letras. Reserva un bloque de memoria e inicializa a 0 todo el bloque (que es mas rapido que hacerlo de otras formas). Es muy recomendable hacer este tipo de reserva de memoria por que atenua en gran medida los desastres de un error de administracion de memoria, por que generalmente al intentar escribir usando un puntero no inicializado genera una excepcion por intentar escribir en una zona de memoria no permitida, que viene a ser el 0 con el que inicializamos. Si intentamos acceder a una estructura de datos este acceso sera a otras posiciones pero generalmente suficientemente "chicas" (20,30,150,) para ser salvados por la excepcion de intento de escritura o lectura de una zona de memoria que no podemos utilizar.
Cita de: "Amilius"a=b?c:d;P.D.2. Si quieres tener todos tus valores iniciados a 0 si trabajas en windows existe una funcion del sistema operativo, un malloc especial no recuerdo exactamente el nombre pero solo cambia una o dos letras. Reserva un bloque de memoria e inicializa a 0 todo el bloque (que es mas rapido que hacerlo de otras formas). Es muy recomendable hacer este tipo de reserva de memoria por que atenua en gran medida los desastres de un error de administracion de memoria, por que generalmente al intentar escribir usando un puntero no inicializado genera una excepcion por intentar escribir en una zona de memoria no permitida, que viene a ser el 0 con el que inicializamos. Si intentamos acceder a una estructura de datos este acceso sera a otras posiciones pero generalmente suficientemente "chicas" (20,30,150,) para ser salvados por la excepcion de intento de escritura o lectura de una zona de memoria que no podemos utilizar.El operador ternario es muy bueno realmente, te permite aplicar la misma logica que un if else en una sola linea.En cuanto a la memoria en el heap, justamente HeapAlloc es la funcion que provee Windows. Poniendo el segundo parametro a HEAP_ZERO_MEMORY conseguis el efecto indicado.De cualquier manera no tiene mucho sentido lo que decis sobre evitar problemas de excepciones ya que un puntero no inicializado puede apuntar a cualquier lado, a lo que haya en la pila en esa posicion de la variable y no tiene nada que ver con reservar memoria.Si sirve para cuando usamos funciones de cadenas pero yo les recomiendo la practica habitual:Código: Text char *str = (char*)malloc(len);memset(str, 0, len); //yo uso que es una macro en VC++ ZeroMemory(str, len);free(str); Si se acostumbran a escribir los tres como si fueran atomicos dificilmente tengan memory leaks.
Cita de: "scullyERA" Qué no se supone que estábamos hablando de forma de escribir ("codificar") en C, y no de como mostrar datos en pantalla?? ... pero bueno., estoy de acuerdo con mi buen ETERNAL IDOL pues gotoxy no es estandar (pero que bien ayuda en windows, jajaja )!! Cual windows? sera en esa ventana de DOS emulado. Pues la verdad que hacen perder tiempo inutilmente enseñando funciones no estandar para compiladores a 16bits.P.D. y no se olviden del siempre util:a=b?c:d;P.D.2. Si quieres tener todos tus valores iniciados a 0 si trabajas en windows existe una funcion del sistema operativo, un malloc especial no recuerdo exactamente el nombre pero solo cambia una o dos letras. Reserva un bloque de memoria e inicializa a 0 todo el bloque (que es mas rapido que hacerlo de otras formas). Es muy recomendable hacer este tipo de reserva de memoria por que atenua en gran medida los desastres de un error de administracion de memoria, por que generalmente al intentar escribir usando un puntero no inicializado genera una excepcion por intentar escribir en una zona de memoria no permitida, que viene a ser el 0 con el que inicializamos. Si intentamos acceder a una estructura de datos este acceso sera a otras posiciones pero generalmente suficientemente "chicas" (20,30,150,) para ser salvados por la excepcion de intento de escritura o lectura de una zona de memoria que no podemos utilizar.
Además siendo un funcion de windos SEGURO que es más lenta.