número entero lenguaje C

En primer lugar, el concepto de número entero

Somos número entero tipos de datos utilizados comúnmente en la vida, también se utiliza comúnmente como una programación de datos, lenguaje C utilizando la palabra clave int para definir las variables de número entero (int es la abreviatura de número entero).

En la definición de las variables, se puede añadir firmada, sin firmar, a corto y largo cuatro tipos de modificadores.

Firmado : firmado, puede representar números positivos y negativos.

sin signo : unsigned, sólo puede ser un número positivo, por ejemplo, índices de matriz, como la altura de una persona.

Breve : Corto, ahora bajo los principales sistemas operativos de 64 bits, memoria de número entero de 4 bytes, usando una mezcla 4
número entero -byte más que suficiente para guardar más pequeño, será inactivo dos bytes, estos bytes se desperdician a. Desde el principio, o en el microcontrolador y los sistemas integrados, los recursos de memoria son se inventó el lenguaje C muy escasa, todos los programas en la memoria para ahorrar tanto como sea posible.

Largo : larga, más larga entero.

En segundo lugar, un número entero en el intervalo

Entero que varía de sistema operativo y compilador de lenguaje C relacionadas, no es un valor fijo, podemos de acuerdo a su tamaño de memoria para inferir su rango de valores.

Un byte tiene ocho bits, representan el rango de datos es 2 . 8 -1, es decir, 255.

Si la memoria está ocupado por dos bytes, gama sin signo es 2 . 8 Ⅹ 2 . 8 -1.

Si la cantidad de memoria es de cuatro bytes, gama sin signo es 2 . 8 Ⅹ 2 . 8 Ⅹ 2 . 8 Ⅹ 2 . 8 -1.

Si la cantidad de memoria es de ocho bytes, gama sin signo es 2 . 8 Ⅹ 2 . 8 Ⅹ 2 . 8 Ⅹ 2 . 8 Ⅹ 2 . 8 Ⅹ 2 . 8 Ⅹ 2 . 8 Ⅹ 2 . 8 -1.

Si está firmado, el rango se reduce a la mitad, debido a que la señal de ocupar un lugar.

El código de ejemplo utilizado para probar una variedad de tamaño de la memoria de un número entero.

Ejemplo (book60.c)

/*
 * 程序名:book60.c,此程序演示整数占用内存的大小和取值范围。
 * 作者:C语言技术网(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>

int main()
{
  short si;   // 短整数
  int   ii;   // 整数
  long  li;   // 长整数

  printf("sizeof short is %d\n",sizeof(short));
  printf("sizeof int is %d\n",sizeof(int));
  printf("sizeof long is %d\n",sizeof(long));
}

Los resultados operativos

Aquí Insertar imagen Descripción

sizeof está reservado palabras clave en lenguaje C, un operador, no una función, sizeof realidad adquirida espacio de almacenamiento de datos en la memoria ocupada, en bytes.

int ii;       // sizeof(int)和sizeof(ii)都可以。

De acuerdo con el resultados de las pruebas book60.c, podemos obtener una variedad de rangos de números enteros.

tipo de taquigrafía Escriba el nombre completo longitud la gama
corto [Firmado] corta [int] 2 bytes -32768 ~ 32767
corto sin signo corto sin signo [int] 2 bytes 0 ~ 65535
En t [Firmado] int 4 bytes -2147483648 2147483647 ~
unsigned int unsigned [int] 4 bytes 0 ~ 4294967295
largo [Firmado] larga [int] 8 bytes -9223372036854775808 ~ 9223372036854775807
largo sin signo unsigned long [int] 8 bytes 0 ~ 18446744073709551615

nota:

1) ordenador con el nivel más alto en un símbolo para expresar, entero sin signo no requiere un bit de signo modificado, mientras que la expresión de un número entero positivo que el valor entero con signo modificado se duplicó.

2) cuando se escribe un programa, los soportes de la mesa [] palabra escrita se pueden omitir.

3) Al escribir el programa, a la asignación variable entera no puede exceder la gama de variables, similar a la siguiente error de tiempo de compilación se produce, el programa puede también tener consecuencias no se ejecutan pronóstico.

Aquí Insertar imagen Descripción

programadores 4) la memoria del ordenador ahora sin valor, se recomienda menos cortos, int cautela, multiusos largo, la memoria no es un problema, sobre todo de control de estabilidad.

En tercer lugar, la salida del número entero

En la siguiente tabla, es importante recordar primero y formato de salida de la segunda fila decimal, las últimas dos décadas, octal nunca he utilizado, número hexadecimal sólo se ve en las direcciones de memoria de visualización, por lo que no les importa y octal el conocimiento y la comprensión relacionada hexagonal pueden ser.

Aquí Insertar imagen Descripción

Tenga en cuenta que un pozo: el tipo de caracteres de control de formato de salida se corresponde mejor con el tipo de la variable, de lo contrario habrá consecuencias no deseadas, ejemplo:

int i=32767;
printf("i %hd,%d\n",i,i);
int j=32768;
printf("j %hd,%d\n",j,j);

salida:

i 32767,32767
j -32768,32768     // 得到了意外的输出结果,32768超出了short的取值范围。

% HD para dar salida a un entero corto, el valor máximo es 32 767, 32 767 puede ser de salida, pero no la salida normal 32.768.

En cuarto lugar, binario de escritura, los números hexadecimales y octales

El valor predeterminado es un dígito decimal, representa un número decimal sin ningún formato especial. Sin embargo, representan un binario, octal o hexadecimal no es el mismo, y los números decimales para distinguir, debe haber algún tipo de formulación especial, en concreto, se precede al número con un carácter particular, es decir, prefijo.

1, binario

0 y 1 de dos dígitos binarios, debe ser 0b o 0B (insensible caso) al comienzo de uso, por ejemplo:

// 以下是合法的二进制
int a = 0b101;      // 换算成十进制为 5
int b = -0b110010;  // 换算成十进制为 -50
int c = 0B100001;   // 换算成十进制为 33
// 以下是非法的二进制
int m = 101010;  // 无前缀 0B,相当于十进制
int n = 0B410;    // 4不是有效的二进制数字

Tenga en cuenta que el lenguaje C estándar no admite la anterior formulación binaria, pero algunos compiladores mismo solamente se extendió admite números binarios. En otras palabras, no todos los compiladores soportan dígitos binarios, sólo una parte del soporte del compilador, y una relación con la versión del compilador.

2, octal

De 0 a 7 ocho dígitos octales, se debe comenzar con 0 (nota que el 0 es un número, no la letra o) cuando, por ejemplo:

// 以下是合法的八进制数
int a = 015;      // 换算成十进制为 13
int b = -0101;    // 换算成十进制为 -65
int c = 0177777;  // 换算成十进制为 65535

// 以下是非法的八进制
int m = 256;  // 无前缀 0,相当于十进制
int n = 03A2;  // A不是有效的八进制数字

3, hexadecimal

Por los dígitos hexadecimales 0 a 9, letras A ~ F o una f (insensible caso) composición ~ deben 0x o 0X (insensible caso) al comienzo de uso, por ejemplo:

// 以下是合法的十六进制
int a = 0X2A;   // 换算成十进制为 42
int b = -0XA0;  // 换算成十进制为 -160
int c = 0xffff;   // 换算成十进制为 65535

// 以下是非法的十六进制
int m = 5A;    // 没有前缀 0X,是一个无效数字
int n = 0X3H;  // H不是有效的十六进制数字

4, nota que el pozo

En la vida real y el trabajo, se escribe números decimales, a fin de alinear o por otras razones, más el valor 0 en frente de ella, no importa, pero, en el lenguaje C, no añada 0 ante un número decimal, será un error informático consideran números octales.

Cinco funciones de la biblioteca de uso común

Lenguaje C proporciona varias funciones de la biblioteca de uso común, la siguiente declaración:

int  atoi(const char *nptr);  	// 把字符串nptr转换为int整数
long atol(const char *nptr);     // 把字符串nptr转换为long整数
int  abs(const int j);            // 求int整数的绝对值
long labs(const long int j);     // 求long整数的绝对值

Ejemplo (book61.c)

/*
 * 程序名:book61.c,此程序演示整数的atoi atol abs labs函数的使用
 * 作者:C语言技术网(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>
#include <stdlib.h>   // 如果不包含这个头文件,会出现意外的结果。

int main()
{
  int  ii;
  long ll;

  ii=atoi("-2147483647");
  ll=atol("-9223372036854775807");
  printf("ii=%d\n",ii);
  printf("ll=%ld\n",ll);

  ii=abs(ii);
  ll=labs(ll);
  printf("ii=%d\n",ii);
  printf("ll=%ld\n",ll);
}

Los resultados operativos

Aquí Insertar imagen Descripción

En sexto lugar, el tipo de datos alias

Typedef C lenguaje permite a los programadores utilizar palabras clave para definir un alias tipo de datos, que generalmente tienen dos características: 1) un nombre más corto; 2) más en línea con la dieta programador.

Por ejemplo, a partir de un size_t int alias sin signo.

typedef unsigned int size_t;
size_t ii; 等同于 unsigned int ii;

Echemos un vistazo a la ayuda strlen función, strlen valor de retorno es de tipo size_t.

Aquí Insertar imagen Descripción

Siete de números aleatorios

En el desarrollo real, esta función utilizará un número aleatorio, por ejemplo, es necesario utilizar un número aleatorio al escribir un programa como el juego.

1 genera un número aleatorio

En el lenguaje C, usamos <stdlib.h> cabecera srand archivo y la función rand para generar un número aleatorio.

void srand(unsigned int seed);   // 随机数生成器的初始化函数
int  rand();                        // 获一个取随机数

srand función para inicializar el generador de números aleatorios (comúnmente conocida como semillas), en el desarrollo real, podemos utilizar el tiempo como parámetro, siempre que cada momento de la siembra diferente, entonces la semilla resultante es diferente, número aleatorio final es diferente, por lo general usamos <time.h> funciones de archivo de cabecera para obtener un tiempo preciso a tiempo que la segunda semilla.

Ejemplo (book63.c)

/*
 * 程序名:book63.c,此程序用于演示随机数
 * 作者:C语言技术网(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
  int ii;

  srand(time(0));  // 播下随机种子

  for (ii=0;ii<5;ii++)  // 生成5个随机数
  {
    printf("%d ", rand());  // 获取随机数
  }

  printf("\n");
}

Los resultados operativos

Aquí Insertar imagen Descripción

2, una gama de generación de números aleatorios

En el desarrollo real, a menudo necesita un número aleatorio dentro de un cierto rango para un cierto rango de generación de números aleatorios, es necesario el uso de alguna técnica, método utilizado comúnmente es una operación de módulo (tomar el resto), además de un sumador:

int a = rand() % 50;   // 产生0~49的随机数

Si desea limitar las disposiciones relativas a:

int a = rand() % 51 + 100;   // 产生100~150的随机数

Tome el resto de módulo es decir, rand ()% 51 + 100, rand ()% 51 genera un número aleatorio es 0 a 50, para garantizar un mínimo de vuelta 100 sólo es 100, el máximo es 50 + 100 = 150.

Ocho, Deberes

1) la preparación del programa de ejemplo, determina el número de bytes corto, corto sin signo, int, unsigned int, largo, unsigned long memoria-intensiva.

2) preguntas de selección múltiple: Se van int valores?

(A) más de dos mil millones (B) -2147483648 ~ 2147483647 4294967295 © 0 ~

3) preguntas de opción múltiple: ¿El largo intervalo de valores es la cantidad?

(A), muchos millones (B) lo suficientemente grande © -9223372036854775808 ~ 9223372036854775807

4) la preparación del programa de ejemplo, la entrada de cadena numérica a partir de la interfaz, almacenado en una variable de cadena, y luego convertir en un entero por la función atoi, entonces la salida 100 acoplada a la pantalla.

5) En el lenguaje C, hay un largo número entero int es largo, se escribe un programa, que ocupa prueba de memoria y el rango del número de bytes, y mucho, mucho tipo int Ponder si tienen valor práctico.

6) la preparación de programas de muestra, prueba de corto, corto sin signo, int, sin firmar, larga, misiones largo sin signo más allá de la gama de consecuencias.

7) reescribir abs y laboratorios enteros funciones de biblioteca para lograr su función, la declaración de la función como sigue:

int   ABS(const int j);                 // 求int整数的绝对值
long LABS(const long int j);           // 求long整数的绝对值

8) utilizando los conocimientos ya aprendido, una función personalizada, el nombre de la función es CTOI, el carácter '0', '1', '2', '3', '4', '5', '6', " 7 '' 8 '' 9 '0,1,2,3,4,5,6,7,8,9 convertir en un entero. declaración de la función de la siguiente manera:

int ctoi(const char chr);
chr为用字符方式表示的数字,函数的返回值为数字的整数。

Nota: si se utiliza o sentencia switch, valor de determinación CHR, y volver directamente los resultados.

llamar a:

printf("'0' is %d\n",ctoi('0'));    // 输出结果是'0' is 0
printf("'9' is %d\n",ctoi('9'));    // 输出结果是'9' is 9

En el siguiente puesto de trabajo es difícil, si no completa, no ser demasiado enredado, una actualización de conocimientos después de la DO.

9) una función personalizada, el nombre de la función es prisionero de guerra conocimiento, el uso de ya aprendido, encontrar un número de n-ésima potencia, declaración de la función de la siguiente manera:

// 求x的y次幂,函数返回值为x的y次幂。
long  POW(const int x,const int y);

llamar a:

printf("POW(2,3) is %lu\n",POW(2,3));      // 输出结果是8
printf("POW(10,3) is %lu\n",POW(10,5));    // 输出结果是100000

10) la preparación del programa de ejemplo, el número en la cadena de todos juntos, por ejemplo, cadena es "90576483975423", el resultado es 72 todos juntos.

11) de reescritura de número entero atoi y atol funciones de biblioteca para lograr su función, la declaración de la función como sigue:

int   ATOI(const char *nptr);  	// 把字符串nptr转换为int整数
long ATOL(const char *nptr);     // 把字符串nptr转换为long整数

Consejo: por ejemplo la cadena "12305", 12.305 a Integer, abierto es 2000 + 300 + 10 000 + 0 + 5, es decir, 104 + 1 * 2 * 3 * 103 + 102 + 0 + 5 * 101 * 100

12) cincuenta y dos genera un número aleatorio, almacenado en la matriz, el intervalo de 1-52, no debe ser repetido y finalmente aparece en la pantalla.

13) la preparación de un procedimiento de licencias de póquer, el tamaño de una baraja de cartas, además de Wang, hay 52 cartas, mezcladas al azar, y luego distribuidos a cuatro personas.

consejos:

(1) La superficie de la cubierta de la tarjeta puede todo numérico 1-52, dicha matriz es una opción buena;

(2) es generar un intervalo que no repite arrastrando los pies de número aleatorio entre 1-52.

(3) define un conjunto de cuatro, cuatro representantes, el número de secuencia de lavado 52 está asignado a cuatro arrays en la lista. Si no desea definir una serie de cuatro, con se requiere una matriz de dos dimensiones.

(4) Se muestra el valor de cuatro matrices, es que la cara todos los signos.

Nueve, aviso de copyright

C Tecnología de Red de Lenguaje artículo original, que se reproduce por favor indique el enlace de la fuente con el artículo, el autor y original.
Fuente: C Tecnología de red Idioma (www.freecplus.net)
Autor: Ética código de Agricultura

Si los errores tipográficos o errores de artículos, contenido, u otras sugerencias y comentarios, por favor mensaje yo correcta, muchas gracias! ! !

Publicó un artículo original · ganado elogios 2 · Vistas 6728

Supongo que te gusta

Origin blog.csdn.net/u010806950/article/details/105044672
Recomendado
Clasificación