Directorio de artículos
Tipos de datos en lenguaje C:
- Tipos básicos - tipos
enteros - tipos de
punto flotante - Tipo de estructura - tipo de
matriz - tipo de
estructura - tipo de
unión (unión) - Tipo de puntero
- Tipo de vacío (vacío)
Tres elementos del aprendizaje de tipos de datos
- El ancho de los datos almacenados
- Formato de datos almacenados
- Alcance (alcance)
Tipo entero
Tipos de enteros: char short int long los
tipos de enteros se dividen en dos con signo (con signo) y sin signo (sin signo)
carbonizarse | 8 BITS | 1 byte |
---|---|---|
corto | 16BIT | 2 bytes |
En t | 32 bits | 4 bytes |
largo | 32 bits | 4 bytes |
¿Cómo probar el ancho (largo) de los tipos de datos anteriores? Muchas personas positivas usan sizeof (), strlen (), etc. De hecho, frente al desmontaje es lo más sencillo.
#include "stdio.h"
//探测数据宽度
void _test()
{
char i = 0xff; //byte
short j = 0xff; //word
int k = 0xff; //dword
long y = 0xff; //dword
}
int main(int argc,char* argv[])
{
_test();
return 0;
}
función _test (), vs desmontaje generado para ella
//探测数据宽度
void _test()
{
//开栈
00CF16F0 55 push ebp
00CF16F1 8B EC mov ebp,esp
00CF16F3 81 EC F0 00 00 00 sub esp,0F0h
//保存现场
00CF16F9 53 push ebx
00CF16FA 56 push esi
00CF16FB 57 push edi
//填充缓存区
00CF16FC 8D BD 10 FF FF FF lea edi,[ebp-0F0h]
00CF1702 B9 3C 00 00 00 mov ecx,3Ch
00CF1707 B8 CC CC CC CC mov eax,0CCCCCCCCh
00CF170C F3 AB rep stos dword ptr es:[edi]
//函数本身:定义了四个变量
char i = 0xff; //byte
00CF170E C6 45 FB FF mov byte ptr [i],0FFh //字节宽度 byte
short j = 0xff; //word
00CF1712 B8 FF 00 00 00 mov eax,0FFh
00CF1717 66 89 45 EC mov word ptr [j],ax //字节宽度 word
int k = 0xff; //dword
00CF171B C7 45 E0 FF 00 00 00 mov dword ptr [k],0FFh //字节宽度dword
long y = 0xff; //dword
00CF1722 C7 45 D4 FF 00 00 00 mov dword ptr [y],0FFh //字节宽度dword
}
//恢复现场
00CF1729 5F pop edi
00CF172A 5E pop esi
00CF172B 5B pop ebx
//降低堆栈
00CF172C 8B E5 mov esp,ebp
00CF172E 5D pop ebp
//函数返回
00CF172F C3 ret
Esto debería ser muy claro, si decimos, define una variable a: long long long a; su ancho de carácter? Por la misma razón, simplemente verifique el desmontaje.