Notas del editor de especificaciones C (6)

Artículos anteriores:

Notas de edición de especificación C (1)
Notas de edición de especificación C (2)
Notas de edición de especificación C (3)
Notas de edición de especificación C (4)
Notas de edición de especificación C (5)

texto:

Hoy continuaremos compartiendo el sexto capítulo de las notas de nuestro editor de especificaciones C ~
sin más preámbulos, echemos un vistazo:

1. Una variable de estructura no debe inicializarse sin especificar un valor de inicialización, y cada campo/elemento de la variable de estructura debe inicializarse.

*Cada elemento debe inicializarse con un identificador inequívoco y no hay valores de inicialización redundantes. Alternativamente, se puede usar un inicializador {0} en la declaración. Aquí hay dos ejemplos para comparar:

Primero mira el mal ejemplo :

Bad example:
int32_t y[5] = {
    
    1, 2, 3}; /* 此处的初始化具有误导性——实际上,最后两个元素初始化为零 */
int32_t z[2] = {
    
    1, 2, 3}; /* 多初始化一个值 */
int16_t vv[5] = {
    
     [0] = -2, [1] = -9, [3] = -8, [2] = 18 }; /* s错误来源,索引 2 和 3 不是按递增顺序排列的,而 4 被遗忘了 */
struct person {
    
    
unsigned char name[20];
uint16_t roll;
float marks;
int grades[10];
};
struct person p1 = {
    
    " ", 0}; /* 模糊定义 */
struct person p2 = {
    
    "toto" ,67 ,78.3 ,{
    
    0} ,12}; /* 12为多初始化的一个变量 */

Buen ejemplo :

Good example:
int32_t y[5] = {
    
     1, 2, 3, 4, 5 }; 
int32_t z[2] = {
    
     1, 2 }; 
int32_t w[3] = {
    
     0 }; 
/* 以下这种索引值初始化可能比较少见*/
int16_t vv[5] = {
    
     [0] = -2, [1] = -9, [2] = 18, [3] = -8, [4] = 33 }; /* ok */
struct person {
    
    
unsigned char name[20];
uint16_t roll;
float marks;
int grades[10];
};
//结构体这种初始化可以参考一下
struct person p1 = {
    
     .name = "titi", .roll = 12, .marks = 10.0f, .note = {
    
    0}};
struct person p2 = {
    
     .name="toto", .roll=67, .marks=78.3 , .grades={
    
    0}}; 

2. El estándar C no define un tamaño explícito para cada tipo de entero. Especialmente para tipos int, que pueden ser de 16, 32 o 64 bits según la arquitectura.

3. El tipo char ordinario no debe usarse para valores numéricos, porque su signo no está especificado por el estándar C, sino definido por la implementación. Este tipo debe estar restringido al procesamiento de caracteres.

*Reglas: solo se deben usar los tipos char con signo y sin signo para manejar valores numéricos, por lo que el uso del tipo char para manejar números enteros debe estar precedido por unsigned.

4. Sugerencia: no redefina los alias de tipo , por ejemplo:
no es bueno definir un alias de tipo varias veces

Bad example:
/* 这里重复对unsiged short类型进行重定义*/
typedef unsigned short uint16_t;
typedef unsigned short uint16_type; 
typedef uint16_t unsigned_short; 

Buena definición:

Good example:
typedef unsigned short uint16_t;

Bueno, vamos a compartirlo aquí primero hoy ~
Nos vemos en el séptimo artículo de las notas del editor de especificaciones C ~

inserte la descripción de la imagen aquí

Mi nivel es limitado, la información anterior es solo para referencia de aprendizaje, si hay algún error o inadecuación, por favor avise.
Además, no es fácil de crear, no plagie, si es útil para todos, espero que a todos les guste, gracias ~

Supongo que te gusta

Origin blog.csdn.net/OMGMac/article/details/128211998
Recomendado
Clasificación