Aprendizagem da linguagem C [1] - compreender a gramática básica

A linguagem C é uma linguagem de programação de computador orientada a processos de uso geral.

1. Estrutura do programa C

Exemplo C Hello World

O programa C inclui principalmente as seguintes partes:

  1. Directiva do pré-processador
  2. função
  3. variável
  4. Declaração e expressão
  5. Anotação

Exemplos:

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

2. C gramática básica

2.1 token do C

Um programa C é composto de vários tokens, que podem ser palavras-chave, identificadores, constantes, valores de string ou um símbolo.

2.2 Ponto e vírgula

Em programas C, o ponto-e-vírgula é o final de uma instrução. Em outras palavras, cada instrução deve terminar com um ponto e vírgula. Indica o fim de uma entidade lógica.

2.3 Notas

A linguagem C tem dois métodos de comentário:
// Comentário de uma linha
/ * * / Os comentários neste formato podem ser de uma ou várias linhas.
Nota: Você não pode aninhar comentários dentro de comentários e os comentários não podem aparecer em strings ou valores de caracteres.

2.4 Identificador

O identificador C é o nome usado para identificar variáveis, funções ou quaisquer outros itens definidos pelo usuário. Um identificador começa com as letras AZ ou az ou sublinhado _, seguido por zero ou mais letras, sublinhados e números (0-9).
Nota: C é uma linguagem de programação que diferencia maiúsculas de minúsculas

2.5 Palavras-chave

Isso são palavras reservadas. Essas palavras reservadas não podem ser usadas como nomes de constantes, nomes de variáveis ​​ou outros nomes de identificador.

2.6 C espaço

As linhas que contêm apenas espaços são chamadas de linhas em branco e podem conter comentários, e o compilador C irá ignorá-los completamente.
Em C, os espaços são usados ​​para descrever espaços em branco, tabulações, novas linhas e comentários. Espaços separam as várias partes da instrução, permitindo que o compilador reconheça onde termina um elemento (como int) na instrução e onde começa o próximo elemento.

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

O caractere de espaço entre fruta e =, ou = e maçãs não é necessário, mas para melhorar a legibilidade, você pode adicionar alguns espaços conforme necessário.

3. Tipo de dados C

Na linguagem C, os tipos de dados referem-se a uma ampla gama de sistemas usados ​​para declarar variáveis ​​ou funções de diferentes tipos. O tipo de variável determina o espaço ocupado pelo armazenamento da variável e como interpretar o padrão de bits armazenado.

3.1 Tipos em C podem ser divididos nas seguintes 4 categorias

  1. Tipos básicos: tipos aritméticos, incluindo tipos inteiros e de ponto flutuante
  2. Tipo de enumeração: é um tipo aritmético, usado para definir que apenas determinados valores e variáveis ​​discretas podem ser atribuídos no programa
  3. Tipo vazio: O especificador de tipo vazio indica que não há valor disponível
  4. Tipos derivados: tipo de ponteiro, tipo de array, tipo de estrutura, tipo de união, tipo de função

Tipos de matriz e tipos de estrutura são chamados coletivamente de tipos agregados.
O tipo de uma função se refere ao tipo do valor de retorno da função.

3.2 Detalhes do tamanho do armazenamento e intervalo de valores de tipos inteiros padrão
Insira a descrição da imagem aqui

Nota: O tamanho de vários tipos de armazenamento está relacionado ao número de bits no sistema, mas atualmente os sistemas de 64 bits são os principais.
Para obter o tamanho exato de um determinado tipo ou de uma determinada variável em uma plataforma específica, você pode usar o operador sizeof. A expressão sizeof (tipo) obtém o tamanho do byte de armazenamento do objeto ou tipo.
printf ("tamanho do armazenamento interno:% lu \ n", sizeof (int));

3.3 Detalhes do tamanho de armazenamento, intervalo de valor e precisão do tipo de ponto flutuante padrão O
Insira a descrição da imagem aqui
exemplo irá mostrar o espaço de armazenamento ocupado pelo tipo de ponto flutuante e seu valor de intervalo:

#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 vazio O tipo
vazio não especifica nenhum valor disponível
Insira a descrição da imagem aqui

4. Variáveis

  • Uma variável é, na verdade, apenas o nome de uma área da memória que o programa pode manipular. Cada variável em C tem um tipo específico. O tipo determina o tamanho e o layout do armazenamento da variável. Os valores neste intervalo podem ser armazenados na memória e os operadores podem ser aplicados às variáveis.
  • O nome de uma variável pode consistir em letras, números e caracteres de sublinhado. Deve começar com uma letra ou sublinhado. Letras maiúsculas e minúsculas são diferentes porque C faz distinção entre maiúsculas e minúsculas.

Tipos básicos: a
Insira a descrição da imagem aqui
linguagem C também permite a definição de vários outros tipos de variáveis, como enumerações, ponteiros, arrays, estruturas, uniões, etc.

4.1 Definição de variáveis

A definição da variável é dizer ao compilador onde criar o armazenamento da variável e como criar o armazenamento da variável. A definição da variável especifica um tipo de dados e contém uma lista de uma ou mais variáveis ​​desse tipo.
type variable_list;

type deve ser um tipo de dados C válido, que pode ser char, w_char, int, float, double ou qualquer objeto definido pelo usuário. variable_list pode consistir em um ou mais nomes de identificadores e vários identificadores são separados por vírgulas.

exemplo:

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

As variáveis ​​podem ser inicializadas no momento da declaração (especifique um valor inicial). O inicializador consiste em um sinal de igual seguido por uma expressão constante:
type variable_name = value;

exemplo:

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

Definição sem inicialização: as variáveis ​​com duração de armazenamento estático serão inicializadas implicitamente como NULL (o valor de todos os bytes é 0) e os valores iniciais de todas as outras variáveis ​​são indefinidos.

4.2 Declaração de variáveis

A declaração da variável garante ao compilador que a variável existe com o tipo e nome especificados, para que o compilador possa continuar a compilar sem conhecer os detalhes completos da variável.

A declaração da variável só tem seu significado no momento da compilação, e o compilador precisa da declaração da variável real quando o programa está vinculado.

Existem dois casos de declaração de variável:

1. Um deles é a necessidade de estabelecer espaço de armazenamento. Por exemplo: int a já estabeleceu espaço de armazenamento ao ser declarado.

2. O outro não precisa estabelecer espaço de armazenamento, usando a palavra-chave extern para declarar o nome da variável sem defini-lo.

Por exemplo: extern int a A variável a pode ser definida em outros arquivos.

3. A menos que haja uma palavra-chave externa, é a definição de uma variável.

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

Se você precisar fazer referência a uma variável definida em outro arquivo de origem em um arquivo de origem, precisamos apenas adicionar a declaração de palavra-chave externa à variável no arquivo referenciado.

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

Citando:

#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 e valores R em C

Existem dois tipos de expressões em C:

1. Lvalue (lvalue): Uma expressão que aponta para um local de memória é chamada de expressão lvalue. O valor esquerdo pode aparecer à esquerda ou direita do número da atribuição.

2. Rvalue: O termo rvalue se refere ao valor armazenado em algum endereço na memória . Um rvalue é uma expressão que não pode ser atribuída, ou seja, um rvalue pode aparecer no lado direito do número de atribuição, mas não pode aparecer no lado esquerdo do número de atribuição.

A variável é um lvalue, portanto, pode aparecer à esquerda do número de atribuição. Literais numéricos são rvalues, portanto, não podem ser atribuídos e não podem aparecer no lado esquerdo do número de atribuição.

5. Constante

As constantes são valores fixos e não serão alteradas durante a execução do programa. Esses valores fixos também são chamados de literais.

As constantes podem ser qualquer tipo de dados básico, como constantes inteiras, constantes de ponto flutuante, constantes de caracteres ou literais de string, bem como constantes de enumeração.

Constantes são como variáveis ​​regulares, exceto que o valor de uma constante não pode ser modificado após ser definido.

5.1 Constante inteira

As constantes inteiras podem ser decimais, octais ou hexadecimais. O prefixo especifica a raiz: 0x ou 0X significa hexadecimal, 0 significa octal e, sem prefixo, significa decimal por padrão.

Uma constante inteira também pode ter um sufixo. O sufixo é uma combinação de U e L. U representa um inteiro sem sinal (sem sinal) e L representa um inteiro longo (longo). O sufixo pode ser maiúsculo ou minúsculo, e a ordem de U e L é arbitrária.

5.2 Constantes de ponto flutuante

As constantes de ponto flutuante consistem em uma parte inteira, um ponto decimal, uma parte decimal e uma parte expoente. Você pode usar a forma decimal ou a forma exponencial para representar constantes de ponto flutuante.

Quando expresso na forma decimal, deve incluir uma parte inteira, uma parte decimal ou ambas.

Quando expresso na forma exponencial, o ponto decimal, o expoente ou ambos devem ser incluídos. Os expoentes assinados são introduzidos com e ou E.

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

5.3 Constantes de caracteres

As constantes de caracteres são colocadas entre aspas simples. Por exemplo, 'x' pode ser armazenado em uma variável simples do tipo char.

A constante de caractere pode ser um caractere comum (como 'x') , uma sequência de escape (como '\ t') ou um caractere geral (como '\ u02C0').

Em C, existem alguns caracteres específicos.Quando são precedidos por uma barra invertida, eles têm um significado especial e são usados ​​para representar como nova linha (\ n) ou tabulação (\ t).

Insira a descrição da imagem aqui

5.4 Constantes de string

Literais ou constantes de string são colocados entre aspas duplas "". Uma string contém caracteres semelhantes a constantes de caracteres: caracteres comuns, sequências de escape e caracteres gerais.

Você pode usar espaços como delimitadores para quebrar uma constante de string longa em linhas.

5.5 Definir constantes

Em C, existem duas maneiras simples de definir constantes:
1. Use o pré-processador #define

#define identifier value

2. Use a palavra-chave const

Você pode usar o prefixo const para declarar constantes do tipo especificado

const type variable = value;

Nota: É uma boa prática de programação definir constantes como letras maiúsculas.

Acho que você gosta

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