Introducción

Introducción

Como se prometió, comenzando con esta parte de nuestro artículo de desarrollo de C, comenzaremos con el aprendizaje, sin más introducción. No pude encontrar una mejor manera de comenzar más que esto, porque los tipos, operadores y variables son una parte esencial de C y los usará todo el tiempo al escribir sus propios programas. Por ejemplo, puede escribir un programa C simple sin definir sus propias funciones, pero es más difícil hacerlo sin algunas variables, a menos que desee quedarse con "Hola, mundo!". Una variable no es más que una ubicación en la memoria que contiene un valor que se puede alterar (de ahí el nombre). Pero antes de declarar una variable, debe saber qué tipo de valor desea que tenga, y aquí usará tipos. Y para funcionar En esas variables, necesitarás ... operadores, por supuesto. Tengo la intención de hacer que este curso sea lo más conciso posible, por lo que recomiendo la atención y, como de costumbre, practicar.

Tipos

Como se dijo, antes de ir y declarar una variable, debe saber qué tipo de valor se mantendrá. ¿Será un número?? Si es así, ¿qué tan grande podría ser conseguir?? ¿Es un entero?? O tal vez quieras declarar una cadena? Estas son cosas que debe saber con certeza antes de elegir el tipo, y recomendamos un cuidado adicional cuando se trata de posibles desbordamientos del búfer. C es el tipo de lenguaje que le brinda suficiente cuerda para colgarte y no hace mucho para mantener la mano, y estos errores son muy difíciles de detectar en un gran programa.

Antes de comenzar, debe ser consciente de las relaciones entre hardware y tipos. Aquí es donde esperamos que lea una lectura para usted, especialmente si está usando hardware que no sea X86, ya sea 32 o 64 bits, compiladores que no sean GCC u sistemas operativos distintos de Linux. Por lo general, estas diferencias aparecen cuando se trata de valores de puntos flotantes. No profundizaremos en esto, ya que no es el momento ni el lugar, pero se espera que lea alguna documentación en su compilador, especialmente piezas dependientes de hardware. Ahora comencemos.

char c; sin firmar char uc; bermudas; Unsigned Short Us; int i; no firmado u; largo L; Unsigned Long Ul; flotante f; doble d; Long doble ld; const int ci; 

Decidimos tomar el camino de "Ejemplo primero, explicaciones más tarde" aquí, porque sentimos que algunos de ustedes encontrarán el ejemplo anterior familiarizado. Hay otros idiomas relacionados que declaran sus variables casi de la misma manera, y después de todo, las palabras clave son intuitivas. Antes de continuar, debe decirse que Char, Int, Float y Double son los tipos de datos principales en C. Sin firmar y firmados son modificadores, lo que significa que si necesita trabajar con valores más pequeños que cero, debe decirle al compilador que su variable está firmada, ya que puede ser más grande o menor que cero. Largo y corto (estos son aplicables a los enteros generalmente) le permiten almacenar valores más grandes, o más pequeños, y el número de bytes depende de la máquina, pero un corto debe ser siempre más pequeño que un INT, que a su vez debe ser siempre más pequeño que a lo largo de. Como puede ver, en la práctica uno no usa int o corta larga, solo largo o corto. La palabra clave const según el compilador que una vez que una variable tiene un valor, no se puede cambiar.

Comencemos con el tipo más pequeño, Char. Se garantiza que será lo suficientemente grande como para mantener el valor de un byte, y siempre tiene un tamaño fijo. Si la gente te dice que un byte siempre es ocho bits, mejor piense de nuevo. Cada arquitectura de hardware popular usa bytes de ocho bits, pero hay excepciones, así que no haga suposiciones si desea escribir código portátil. En x86, dado que un byte es de ocho bits, un char (sin firmar) puede contener valores de 0 a 255, es decir, 28. Si se firma un char, entonces puede contener valores de -128 a 127. Pero el nombre puede engañarlo: un personaje puede almacenarse en un carbón, pero si está usando Unicode, estamos hablando de multibyte allí y tendrá que usar warche_t, pero más sobre eso más tarde.

Ahora que sabes qué tipo son modificadores, podemos llegar a enteros. En enteros, puede combinar los modificadores de signo y longitud, como se ve en el ejemplo anterior, para satisfacer sus necesidades. Recuerde tener un editor a mano y consultar con los límites.H encabezado (en mi sistema se encuentra en /usr /incluir) para averiguar los límites reales en su sistema. Como regla corta, un int tendrá valores de 0 a 65535 o, si se firma, de -32768 a 32767. Y un modificador largo duplicará la cantidad de bytes de almacenamiento, por lo que si un int requiere 2 bytes, un largo requerirá 4. Dejaremos que el usuario descubra el resto de los enteros y sus valores mínimos y máximos. Sin embargo, le mostraremos cómo encontrar tamaños y límites en su sistema.

Los flotadores son valores de punto flotante, lo que implica que debe definir una variable como esta:

valor flotante; valor = 234.00;

Incluso si no tiene nada después del punto (la parte decimal), por lo que es un entero en realidad. En realidad, hay situaciones en las que debe declarar un valor entero como flotante, porque el valor puede cambiar y el tipo declarado debe poder almacenar valores de punto flotante. Todos los valores de su máquina se pueden encontrar en Float.H.

Variables

Ahora que sabe qué tipos tiene disponible en C, veamos cómo puede usarlos de manera efectiva. Algunos podrían preguntarse "si tenemos dobles largos que pueden almacenar valores tan grandes, ¿por qué no usarlos en todas partes??" . La programación se trata de eficiencia, y la programación C especialmente, y es por eso que almacenar un valor como 23 en un doble usará 4 veces la memoria necesaria, para nada. Cuando declara una variable, se reserva una parte de la memoria dependiendo del tipo. Entonces, ¿por qué desperdiciar la memoria sin buena razón?? Cree el hábito de usar el tipo exacto que se ajuste a sus valores (posibles), no menos, no más. Has visto arriba como declarar variables. Ahora veamos cómo definirlos, como en darles un valor.

c = 'a'; i = 234; F = 12643.984; LD = 16546581654161598309.87;

Tomamos los nombres de los ejemplos anteriores, que, como habrá notado, se escriben para reflejar el tipo asignado, por lo que 'ld' es un doble largo y así sucesivamente. En este ejemplo, tomamos dos pasos: el primero en declarar la variable, la segunda para definirla asignándolo un valor. Algunos dirán que es un buen estilo escribir código así, pero puede hacer ambas operaciones en un solo paso y nadie lo lastimará:

char c = 'a'; int i = 234; flotante F = 12643.984; Doble largo LD = 16546581654161598309.87;

Recomendamos e incluso le instamos a que use nombres con un significado en su código, y lo comentemos tanto como sea posible: es probable que haya otros que lean lo que escribió y su vida será mucho más fácil si lo hace. Además, use tapas solo cuando sea necesario, especialmente porque C usa todas las CAP en varias directivas preprocesadoras. También el primer carácter del nombre de la variable debe ser una letra.

Como se prometió, dado que todas las charlas y no son buenas, le mostraremos un pequeño programa que puede usar para ver los valores mínimos y máximos de varios tipos, pero solo ilustraremos algunos. El resto será su trabajo, siguiendo nuestro ejemplo, con un editor que tiene límites.H y flotar.h Abierto. Habrá algunos elementos nuevos aquí, pero nunca se preocupe, se explicarán.

#include #include #include int main () unsigned long long ullmax = ullong_max; long lmax = long_max; Long doble ldmax = ldbl_max; printf ("El valor máximo de un largo largo sin firmar es %lu.\ n ", Ullmax); printf (" El valor máximo de un largo es %ld.\ n ", lmax); printf (" El valor máximo de un doble largo es %lf.\ n ", ldmax); devolver 0;  

Entonces, declaramos tres variables con nombres significativos y les asignamos los valores de tres macros definidas en los límites.H y flotar.H. Entonces, por supuesto, tendremos que imprimirlos. Hacemos eso usando printf (), y aquí nos detendremos para hablar una pequeña charla. Recomendamos 'Man 3 Printf' para más detalles sobre Formato de cuerdas, es decir, la parte dentro de las cotizaciones dobles de Printf que comienzan con un '%'. Le dicen a printf qué tipo de valor debe esperar, por lo que debe comportarse de manera diferente con los diferentes tipos. En el primer ejemplo, '%lu' significa largo (el L), que no está firmado (el 'u'). Para enteros, la cadena de formato es 'd', para decimal, y debido a que es un entero largo, será '%ld'. En el tercer impresión, F significa flotador, un doble es básicamente un flotador largo y un doble largo es un flotador largo largo, de ahí el formato.

Ahora, guarde el código anterior, compáquelo y ejecútelo. Este programa, una vez que le agregue más, lo ayudará cuando desee declarar una variable, pero aún no está seguro de qué tipo debe encajar.

Operadores

Operadores aritméticos

Este subcapítulo, por supuesto, trata con los operadores básicos habituales que aprendió en la escuela primaria. Pero hay un poco más. Ejemplo de enemigo,. Los operadores +, -, *, / y % son los operadores binarios. % es el operador de módulos, lo que significa que si tenemos 50 % 2, el resultado será 0 porque el resultado de la División 50 /2 tiene un entero como resultado. Puede usar los primeros cuatro operadores con cualquier valor numérico, pero Modulo solo trata con enteros. La precedencia es la misma que en el libro de arithetics.

Operadores relacionales

Estos operadores son>,> =, <=, <, and they all have the same precedence. For the next part we recommend extra care, because it's cause for much confusion in the beginner's league, and non-beginners alike. Like said above, one uses '=' to give some value to a variable. But if you want to check if a variable has a certain value, you use '==', and if it hasn't, use '!=', where '!' is the logical negation operator, as you'll see. Let's take the following (useless) example:

#include int main () int var = 4; si (var == 4) printf ("var es 4!\norte"); demás printf ("Hay algo mal.\norte"); devolver 0;  

Fundición

En pocas palabras, la fundición está obligando al compilador a olvidarse del tipo y el trato de una variable que tiene otro tipo que suministra. Esto no se hace al azar, solo entre tipos compatibles, y se recomienda la atención al usar fundición. Por ejemplo, supongamos que queremos averiguar el valor ASCII de 'A'. El código podría verse así:

#include int main () char c = 'a'; printf ("El valor ASCII de 'A' es %D.\ n ", (int) c); devolver 0;  

Obtendrá el valor 97, que es de hecho el valor ASCII de 'a'. Entonces, mediante el uso de paréntesis antes y después del tipo que desea "imponer" y todo esto antes del nombre de la variable, obtendrá el lanzamiento. El ejemplo anterior funciona porque un char no es más que un intel pequeño, por lo que los tipos son compatibles. Intente lanzar la variable anterior a otros tipos y anote los resultados.

Operadores de incremento y disminución

Has oído hablar de C ++ seguro. Bueno, su nombre sugiere que de alguna manera es más que C, porque '++' es un operador de incremento (agrega 1 al valor de la variable), al igual que '-' es un operador de disminución. Estos son operadores unarios y pueden tener prefijo y postfijo. Qué significa eso? Significa que puede escribir ++ C o C ++, y el resultado puede o no ser similar. La diferencia es que con '++' prefijo, el valor de la variable se incrementa primero por uno, luego se usa y al revés. Le mostraremos un breve ejemplo de cuándo es importante y cuándo no.

#include int main () int x; int n = 10; int z; n ++; / * n será 11 ahora */ ++norte; / *ídem, prefijo o postfix sin importancia */ x = n ++; / * x será 10 */ z = ++ n; / * Z será 11 */ devolver 0;  

Pero, ¿qué pasa si quieres incrementar/disminuir con más de uno?? Simple, ya que C ++ es el equivalente de C+= 1. Reemplace 1 con cualquier valor que necesite y esté configurado. Estos operadores compuestos también se pueden usar con cualquier otro operador de aritmética binaria (E.gramo. *= o /=) y los operadores bit a bit también, como 'a & = b'.

Operadores de bit a bit

En C puede hacer operaciones bit a bits fácilmente, pero recuerde! Funcionan y deben usarse solo con tipos enteros, firmados o sin firmar. Estos operadores son:

& - bitwise y | - bitwise o ^ - xor <> - cambio derecho - - el complemento de uno

Operadores logicos

Ya hemos tratado '!', que niega cualquier expresión lógica, pero hay dos operadores lógicos muy importantes (tenga cuidado de no mezclarlos con los bit a los bits): y / o, respectivamente. Entonces, si quiero escribir en c algo como "Si la variable 1 tiene el valor 2 y la variable 2 tiene valor 8", escribiré así:

si (var1 == 2 && var2 == 8) .. 

Aquí ambas condiciones deben evaluar como verdaderas para las instrucciones que siguen si se ejecuta. Si lo hará, o ambos, reemplazamos '&&' con '||' (conjunción versus disyunción).

Otros operadores

Las personas que tienen alguna experiencia en C pueden haber notado la falta de algunos operadores. Por supuesto, y somos conscientes de eso, pero ¿qué sentido haría enumerar al operador de indirección mientras los lectores no saben qué es un puntero?? Entonces, los otros operadores, específicos de otras partes de C, serán tratados a su debido tiempo.

Conclusión

Con los ejemplos ofrecidos en esta parte, estamos seguros de que tienes suficiente para jugar un poco y probar varias opciones. Sabes, el compilador no morderá si los alimentos incorrectos, ni la computadora explotará. Y, como dijimos antes, no puedes aprender programación leyendo solo libros. Así que consigue tu teclado y crea algo interesante.

Esto es lo que puede esperar a continuación:

  • I. C Desarrollo en Linux - Introducción
  • II. Comparación entre C y otros lenguajes de programación
  • III. Tipos, operadores, variables
  • IV. Control de flujo
  • V. Funciones
  • VI. Punteros y matrices
  • VII. Estructuras
  • VIII. E/S básica
  • Ix. Estilo de codificación y recomendaciones
  • X. Construyendo un programa
  • Xi. Embalaje para Debian y Fedora
  • Xii. Obtener un paquete en los repositorios oficiales de Debian

Tutoriales de Linux relacionados:

  • Expresiones regulares de Python con ejemplos
  • Bash Script: Hello World Ejemplo
  • Cómo instalar Ubuntu en USB Stick
  • Cosas para instalar en Ubuntu 20.04
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Crea Manjaro Linux Bootable USB
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Ubuntu 20.04 trucos y cosas que quizás no sepas
  • Crea un Ubuntu 20 de arranque.04 USB Stick en MS Windows 10
  • Cómo instalar los controladores NVIDIA en Fedora 32