Herramientas de usuario

Herramientas del sitio


highlevel:c

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
highlevel:c [2008/07/01 09:52]
alfred
highlevel:c [2020/05/09 09:25] (actual)
Línea 8: Línea 8:
 Podemos definir variables sin signo, por ejemplo integers, incluyendo ''​unsigned''​ antes del tipo de variable: ​ Podemos definir variables sin signo, por ejemplo integers, incluyendo ''​unsigned''​ antes del tipo de variable: ​
 <code c>​unsigned int iNum;</​code>​ <code c>​unsigned int iNum;</​code>​
 +
 +
  
  
Línea 31: Línea 33:
 Cuando crees una función con parámetros por defecto en una librería, estos deberán de ser indicados en el código (archivo .cpp) cuando la compiles y no en la cabecera (archivo .h). Pero cuando utilices la cabecera en el código que utiliza la librería, entonces sí que deberás indicar los parámetros por defecto en esta: Cuando crees una función con parámetros por defecto en una librería, estos deberán de ser indicados en el código (archivo .cpp) cuando la compiles y no en la cabecera (archivo .h). Pero cuando utilices la cabecera en el código que utiliza la librería, entonces sí que deberás indicar los parámetros por defecto en esta:
 <code cpp> <code cpp>
-// Archivo .cpp+// Archivo .cpp  ​--------------------------------------------
 void Message::​Error (char* txt, char* title = "​Error!"​) { ... void Message::​Error (char* txt, char* title = "​Error!"​) { ...
-// Archivo .h+ 
 +// Archivo .h  ​----------------------------------------------
 #ifdef _USRDLL ​ #ifdef _USRDLL ​
    ​static void Error (char* txt, char* title);    ​static void Error (char* txt, char* title);
 #else #else
    ​static void Error (char* txt, char* title = "​Error!"​);​    ​static void Error (char* txt, char* title = "​Error!"​);​
 +#endif
 </​code>​ </​code>​
  
Línea 412: Línea 416:
  
 Podemos concatenar strings mediante el operador '​+'​. Podemos concatenar strings mediante el operador '​+'​.
 +
  
  
Línea 430: Línea 435:
 <code cpp>​vector<​int>​ Sumar (vector<​double>​) {...}</​code>​ <code cpp>​vector<​int>​ Sumar (vector<​double>​) {...}</​code>​
   * También podemos pasarlos por referencia: ''​vector<​double>&​ v''​   * También podemos pasarlos por referencia: ''​vector<​double>&​ v''​
 +  * Podemos recorrer un vector con un iterador:
 +<code cpp>
 +for (vector<​point>::​iterator it = points.begin();​ it!=points.end();​ ++it) {
 +  cout << it->x << endl;
 +}
 +</​code>​
  
 ===== ANSI C ===== ===== ANSI C =====
Línea 441: Línea 452:
   * ''​fmod''​ calcula el resto de coma flotante de dos doubles.   * ''​fmod''​ calcula el resto de coma flotante de dos doubles.
   * ''​exp''​ calcula la función exponencial.   * ''​exp''​ calcula la función exponencial.
 +
 +
  
 ==== time ==== ==== time ====
Línea 446: Línea 459:
   * ''​time'',​ esta función devuelve el tiempo de la máquina; el tipo devuelto es un ''​time_t''​ y el que se le pasa como parámetro una referencia a una variable de este tipo, si esta que se le pasa por parámetro no es NULL colocará en ella tambiénen el resultado.   * ''​time'',​ esta función devuelve el tiempo de la máquina; el tipo devuelto es un ''​time_t''​ y el que se le pasa como parámetro una referencia a una variable de este tipo, si esta que se le pasa por parámetro no es NULL colocará en ella tambiénen el resultado.
   * ''​localtime''​ convierte un ''​time_t''​ en un ''​tm'',​ otra estructura de tiempo más legible en la que se especifican los segundos, minutos...   * ''​localtime''​ convierte un ''​time_t''​ en un ''​tm'',​ otra estructura de tiempo más legible en la que se especifican los segundos, minutos...
 +<code c>
 +time_t t;
 +time(&​t);​
 +tm hora = *localtime(&​t);​
 +int hour = hora.tm_hour;​
 +int min = hora.tm_min;​
 +int sec = hora.tm_sec;​
 +</​code>​
   * ''​mktime''​ hace lo contrario a localtime, convierte un ''​tm''​ en ''​time_t''​.   * ''​mktime''​ hace lo contrario a localtime, convierte un ''​tm''​ en ''​time_t''​.
   * ''​difftime''​ calcula la diferencia entre dos ''​time_t''​ en segundos expresada en double.   * ''​difftime''​ calcula la diferencia entre dos ''​time_t''​ en segundos expresada en double.
Línea 613: Línea 634:
 } }
 </​code>​ </​code>​
 +
  
 ==== Asserts ==== ==== Asserts ====
-  * Para usarlas deberás hacer ''#​include<​cassert>''​ en unos compiladores,​ en otros ''#​include <​assert.h>''​+  * Para usarlas deberás hacer ''#​include<​cassert>''​ en compiladores ​de C++, en los de C ''#​include <​assert.h>''​
   * La idea se basa en una línea de código que ha de cumplirse para que el programa pueda seguirse ejecutando, si no se cumpliese debería dar error.   * La idea se basa en una línea de código que ha de cumplirse para que el programa pueda seguirse ejecutando, si no se cumpliese debería dar error.
-  * Ej. ''​assert (i > 3);''​ <- si i no es mayor que 3 el compilador actúa. \\ +  * Ej. ''​assert (i > 3);''​ <- si i es menor que 3 el compilador actúa. ​(Comprueba si la expresión pasada por parámetro no es cero, si lo es envia lanza un error)  ​\\ 
 //Por qué frases tan abstractas como "el compilador actúa"​ o "​debería dar error"?//​ Porque esto va según la config del compilador. Algunos, en código release no hacen caso de los asserts, otros ni en debug. Aún así son muy útiles, ya que generalmente hacen que el programa se pare indicando un error de aserción, donde se encuentra y el por qué. \\  //Por qué frases tan abstractas como "el compilador actúa"​ o "​debería dar error"?//​ Porque esto va según la config del compilador. Algunos, en código release no hacen caso de los asserts, otros ni en debug. Aún así son muy útiles, ya que generalmente hacen que el programa se pare indicando un error de aserción, donde se encuentra y el por qué. \\ 
 Si quieres desactivar los assert añade ''#​define NDEBUG''​. Si quieres desactivar los assert añade ''#​define NDEBUG''​.
highlevel/c.1214905930.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)