Aprendizaje de la lengua C [1]: comprender la gramática básica

El lenguaje C es un lenguaje de programación de computadoras de uso general y orientado a procesos.

1. Estructura del programa C

C ejemplo de Hello World

El programa C incluye principalmente las siguientes partes:

  1. Directiva de preprocesador
  2. función
  3. variable
  4. Declaración y expresión
  5. Anotación

Ejemplos:

// 是预处理器指令,告诉 C 编译器在实际编译之前要包含 stdio.h 文件
#include <stdio.h>
// 是主函数,程序从这里开始执行
int main()
{
    
    
   /* 我的第一个 C 程序,注释内容 */
   ///*...*/ 将会被编译器忽略
   printf("Hello, World! \n");
   //结束程序,并返回0
   return 0;
}

2. C gramática básica

2.1 ficha de C

Un programa en C se compone de varios tokens, que pueden ser palabras clave, identificadores, constantes, valores de cadena o un símbolo.

2.2 Punto y coma

En los programas C, el punto y coma es el final de una declaración. En otras palabras, cada declaración debe terminar con un punto y coma. Indica el final de una entidad lógica.

2.3 Notas

El lenguaje C tiene dos métodos de comentario:
// Comentario de una sola línea
/ * * / Los comentarios en este formato pueden ser de una o varias líneas.
Nota: No puede anidar comentarios dentro de comentarios y los comentarios no pueden aparecer en cadenas o valores de caracteres.

2.4 Identificador

El identificador C es el nombre que se utiliza para identificar variables, funciones o cualquier otro elemento definido por el usuario. Un identificador comienza con las letras AZ o az o guión bajo _, seguido de cero o más letras, guiones bajos y números (0-9).
Nota: C es un lenguaje de programación que distingue entre mayúsculas y minúsculas

2.5 Palabras clave

Eso son palabras reservadas. Estas palabras reservadas no se pueden utilizar como nombres de constantes, nombres de variables u otros nombres de identificadores.

2.6 espacio C

Las líneas que solo contienen espacios se denominan líneas en blanco y pueden contener comentarios, y el compilador de C las ignorará por completo.
En C, los espacios se utilizan para describir espacios en blanco, tabulaciones, nuevas líneas y comentarios. Los espacios separan las distintas partes de la declaración, lo que permite al compilador reconocer dónde termina un elemento (como int) en la declaración y dónde comienza el siguiente elemento.

fruit = apples + oranges;   // 获取水果的总数

El carácter de espacio entre fruta y =, o = y manzanas no es necesario, pero para mejorar la legibilidad, puede agregar algunos espacios según sea necesario.

3. Tipo de datos C

En el lenguaje C, los tipos de datos se refieren a una amplia gama de sistemas utilizados para declarar variables o funciones de diferentes tipos. El tipo de variable determina el espacio que ocupa el almacenamiento de la variable y cómo interpretar el patrón de bits almacenado.

3.1 Los tipos en C se pueden dividir en las siguientes 4 categorías

  1. Tipos básicos: tipos aritméticos, incluidos tipos enteros y de punto flotante
  2. Tipo de enumeración: es un tipo aritmético, utilizado para definir que solo ciertos valores discretos y variables pueden asignarse en el programa.
  3. Tipo vacío: el especificador de tipo vacío indica que no hay ningún valor disponible
  4. Tipos derivados: tipo de puntero, tipo de matriz, tipo de estructura, tipo de unión, tipo de función

Los tipos de matriz y los tipos de estructura se denominan colectivamente tipos agregados.
El tipo de función se refiere al tipo de valor de retorno de la función.

3.2 Detalles del tamaño de almacenamiento y rango de valores de los tipos de enteros estándar
Inserte la descripción de la imagen aquí

Nota: El tamaño de varios tipos de almacenamiento está relacionado con la cantidad de bits en el sistema, pero actualmente los sistemas de 64 bits son los principales.
Para obtener el tamaño exacto de un determinado tipo o una determinada variable en una plataforma específica, puede utilizar el operador sizeof. La expresión sizeof (tipo) obtiene el tamaño de bytes de almacenamiento del objeto o tipo.
printf ("tamaño de almacenamiento int:% lu \ n", sizeof (int));

3.3 Detalles del tamaño de almacenamiento, rango de valores y precisión del tipo de coma flotante estándar El
Inserte la descripción de la imagen aquí
ejemplo dará como resultado el espacio de almacenamiento ocupado por el tipo de coma flotante y su valor de rango:

#include <stdio.h>
#include <float.h>
//头文件 float.h 定义了宏,在程序中可以使用这些值和其他有关实数二进制表示的细节
int main()
{
    
    
   printf("float 存储最大字节数 : %lu \n", sizeof(float));
   printf("float 最小值: %E\n", FLT_MIN );
   printf("float 最大值: %E\n", FLT_MAX );
   printf("精度值: %d\n", FLT_DIG );
   
   return 0;
}
//%E 为以指数形式输出单、双精度实数
//在 Linux 上编译并执行上面的程序时,它会产生下列结果
float 存储最大字节数 : 4 
float 最小值: 1.175494E-38
float 最大值: 3.402823E+38
精度值: 6

3.4 tipo vacío tipo
vacío no especifica ningún valor disponible
Inserte la descripción de la imagen aquí

4. Variables

  • Una variable es en realidad solo el nombre de un área de memoria que el programa puede manipular. Cada variable en C tiene un tipo específico. El tipo determina el tamaño y el diseño del almacenamiento de la variable. Los valores en este rango se pueden almacenar en la memoria y los operadores se pueden aplicar a las variables.
  • El nombre de una variable puede constar de letras, números y caracteres de subrayado. Debe comenzar con una letra o un guión bajo. Las letras mayúsculas y minúsculas son diferentes porque C distingue entre mayúsculas y minúsculas.

Tipos básicos: el
Inserte la descripción de la imagen aquí
lenguaje C también permite la definición de varios otros tipos de variables, como enumeraciones, punteros, matrices, estructuras, uniones, etc.

4.1 Definición de variables

La definición de variable es decirle al compilador dónde crear el almacenamiento de la variable y cómo crear el almacenamiento de la variable. La definición de variable especifica un tipo de datos y contiene una lista de una o más variables de ese tipo.
type variable_list;

type debe ser un tipo de datos C válido, que puede ser char, w_char, int, float, double o cualquier objeto definido por el usuario. variable_list puede constar de uno o más nombres de identificadores, y los identificadores múltiples están separados por comas.

ejemplo:

int    i, j, k;
char   c, ch;
float  f, salary;
double d;

Las variables se pueden inicializar en el momento de la declaración (especificar un valor inicial). El inicializador consta de un signo igual seguido de una expresión constante:
type variable_name = value;

ejemplo:

extern int d = 3, f = 5;    // d 和 f 的声明与初始化
int d = 3, f = 5;           // 定义并初始化 d 和 f
byte z = 22;                // 定义并初始化 z
char x = 'x';               // 变量 x 的值为 'x'

Definición sin inicialización: las variables con duración de almacenamiento estático se inicializarán implícitamente en NULL (el valor de todos los bytes es 0) y los valores iniciales de todas las demás variables no están definidos.

4.2 Declaración de variables

La declaración de variable asegura al compilador que la variable existe con el tipo y nombre especificados, de modo que el compilador puede continuar compilando sin conocer los detalles completos de la variable.

La declaración de variable solo tiene su significado en tiempo de compilación, y el compilador necesita la declaración de variable real cuando el programa está vinculado.

Hay dos casos de declaración de variable:

1. Uno es la necesidad de establecer un espacio de almacenamiento. Por ejemplo: int a ya ha establecido un espacio de almacenamiento cuando se declara.

2. El otro no necesita establecer espacio de almacenamiento, usando la palabra clave extern para declarar el nombre de la variable sin definirlo.

Por ejemplo: extern int a La variable a se puede definir en otros archivos.

3. A menos que haya una palabra clave externa, es la definición de una variable.

extern int i; //声明,不是定义
int i; //声明,也是定义

Si necesita hacer referencia a una variable definida en otro archivo fuente en un archivo fuente, solo necesitamos agregar la declaración de palabra clave externa a la variable en el archivo referenciado.

#include <stdio.h>
/*外部变量声明*/
extern int x ;
extern int y ;
int addtwonum()
{
    
    
    return x+y;
}

Citandolo:

#include <stdio.h>
  
/*定义两个全局变量*/
int x=1;
int y=2;
int addtwonum();
int main(void)
{
    
    
    int result;
    result = addtwonum();
    printf("result 为: %d\n",result);
    return 0;
}

4.3 Valores L y valores R en C

Hay dos tipos de expresiones en C:

1. Lvalue (lvalue): una expresión que apunta a una ubicación de memoria se llama expresión lvalue. El valor de la izquierda puede aparecer a la izquierda o a la derecha del número de asignación.

2. Rvalue: El término rvalue se refiere al valor almacenado en alguna dirección de la memoria . Un rvalue es una expresión que no se puede asignar, es decir, un rvalue puede aparecer en el lado derecho del número de asignación, pero no puede aparecer en el lado izquierdo del número de asignación.

La variable es un valor l, por lo que puede aparecer a la izquierda del número de asignación. Los literales numéricos son valores r, por lo que no se pueden asignar y no pueden aparecer en el lado izquierdo del número de asignación.

5. Constante

Las constantes son valores fijos y no cambiarán durante la ejecución del programa. Estos valores fijos también se denominan literales.

Las constantes pueden ser cualquier tipo de datos básico, como constantes enteras, constantes de punto flotante, constantes de caracteres o cadenas literales, así como constantes de enumeración.

Las constantes son como variables regulares, excepto que el valor de una constante no se puede modificar después de su definición.

5.1 Constante entera

Las constantes enteras pueden ser constantes decimales, octales o hexadecimales. El prefijo especifica la base: 0x o 0X significa hexadecimal, 0 significa octal y sin prefijo, significa decimal por defecto.

Una constante entera también puede tener un sufijo, que es una combinación de U y L. U representa un entero sin signo (sin signo) y L representa un entero largo (largo). El sufijo puede estar en mayúsculas o minúsculas, y el orden de U y L es arbitrario.

5.2 Constantes de coma flotante

Las constantes de coma flotante constan de una parte entera, una coma decimal, una parte decimal y una parte exponente. Puede utilizar la forma decimal o exponencial para representar constantes de punto flotante.

Cuando se expresa en forma decimal, debe incluir una parte entera, una parte decimal o ambas.

Cuando se expresa en forma exponencial, se debe incluir el punto decimal, el exponente o ambos. Los exponentes con signo se introducen con e o E.

3.14159       /* 合法的 */
314159E-5L    /* 合法的 */
510E          /* 非法的:不完整的指数 */
210f          /* 非法的:没有小数或指数 */
.e55          /* 非法的:缺少整数或分数 */

5.3 Constantes de caracteres

Las constantes de caracteres se encierran entre comillas simples. Por ejemplo, 'x' se puede almacenar en una variable simple de tipo char.

La constante de caracteres puede ser un carácter ordinario (como 'x') , una secuencia de escape (como '\ t') o un carácter general (como '\ u02C0').

En C, hay algunos caracteres específicos. Cuando están precedidos por una barra invertida, tienen un significado especial y se usan para representar como nueva línea (\ n) o tabulación (\ t).

Inserte la descripción de la imagen aquí

5.4 Constantes de cadena

Los literales o constantes de cadena se encierran entre comillas dobles "". Una cadena contiene caracteres similares a las constantes de caracteres: caracteres ordinarios, secuencias de escape y caracteres generales.

Puede utilizar espacios como delimitadores para dividir una constante de cadena larga en líneas.

5.5 Definir constantes

En C, hay dos formas sencillas de definir constantes:
1. Utilice #define preprocessor

#define identifier value

2. Utilice la palabra clave const

Puede usar el prefijo const para declarar constantes del tipo especificado

const type variable = value;

Nota: Es una buena práctica de programación definir las constantes como letras mayúsculas.

Supongo que te gusta

Origin blog.csdn.net/qq_46009608/article/details/110200517
Recomendado
Clasificación