C 语言 整型 int
unsigned 无符号定义变量
- 默认声明的变量是有符号的
signed
,表示可以是正数,可以是负数。 - 无符号定义时不能是负数,赋值了负数时输出的值不是想要的值。
- 无符号使用
printf
输出时使用%u
占位符。
c
#include <stdio.h>
int main()
{
// 默认声明的变量是有符号的 signed
// signed 表示有符号的,表示可以是正数,可以是负数
int a = -10;
printf("a: %d\n", a);
// 相当于
signed int b = -10;
printf("b: %d\n", b);
// 无符号定义时不能是负数
unsigned int c = -10;
// 使用 %u 输出无符号内容,因为声明的是 unsigned 无符号的变量,赋值了负数时输出的值不是想要的值
printf("c: %u\n", c);
// 使用 %d 没有区别
printf("c: %d\n", c);
return 0;
}
整型定义
c
int main()
{
// 输出
int a = 10;
// 10进制输出
printf("%d\n", a);
// 8 进制输出
printf("%o\n", a);
// 16 进制输出
printf("%x\n", a);
printf("%X\n", a);
// 定义
// 定义 8 进制数据
int b = 0123;
// 定义 16 进制数据(字母不区分大小写)
int c = 0x123;
printf("%d\n", b);
printf("%o\n", b);
printf("%x\n", b);
printf("%d\n", c);
printf("%o\n", c);
printf("%x\n", c);
return 0;
}
printf 打印占位符
打印格式 | 含义 |
---|---|
%d | 输出一个有符号的 10 进制 int 类型 |
%o | (字母 o) 输出 8 进制的 int 类型 |
%x | 输出 16 进制的 int 类型,字母以小写输出 |
%X | 输出 16 进制的 int 类型,字母以大写输出 |
%u | 输出一个 10 进制的无符号数 |
整型输入
使用scanf
方法输入
在 vs 编辑器中编译会提示scanf
不安全,要求输入%d,但输入不是数字时会出现异常,解决方法:
- 在程序第一行添加代码
#define _CRT_SECURE_NO_WARNING
- 或添加一行
#prama warning(disable:4996)
c
#include <stdio.h>
int main(){
int a = 0;
printf("请输入数字\n", a);
// & 表示取内存地址运算符,运行后控制台将等待输入一个整型
scanf("%d", &a);
printf("你输入的是:%d\n", a);
return 0;
}
short、int、long、long long
占用字节
数据类型 | 占用空间 |
---|---|
short(短整型) | 2 字节 |
int(整型) | 4 字节 |
long(长整形) | Windows 为 4 字节,Linux 为 4 字节(32 位),8 字节(64 位) |
long long(长长整形) | 8 字节 |
注意
- 需要注意的是,整型数据在内存中占的字节数与所选择的操作系统有关。虽然 C 语言标准中没有明确规定整型数据的长度,但 long 类型整数的长度不能短于 int 类型, short 类型整数的长度不能长于 int 类型。
- 当一个小的数据类型赋值给一个大的数据类型,不会出错,因为编译器会自动转化。但当一个大的类型赋值给一个小的数据类型,那么就可能丢失高位。
printf 打印占位符
打印格式 | 含义 |
---|---|
%hd | 输出 short 类型 |
%d | 输出 int 类型 |
%ld | 输出 long 类型 |
%lld | 输出 long long 类型 |
%hu | 输出 unsigned short 类型 |
%u | 输出 unsigned int 类型 |
%lu | 输出 unsigned long 类型 |
%llu | 输出 unsigned long long 类型 |
sizeof 查看数据类型占位大小
c
int main()
{
// 整型变量
int a = 10;
// 短整型变量
short b = 20;
// 长整型变量
long c = 30;
// 长长整型变量
long long d = 40;
printf("整型变量 %d\n", a);
printf("短整型变量 %hd\n", b);
printf("长整型变量 %ld\n", c);
printf("长长整型变量 %lld\n", d);
// sizeof 计算数据类型在内存中占用的字节(BYTE)大小
// 使用方法 sizeof(数据类型) sizeof(变量) sizeof 变量名
//
unsigned len = sizeof(int);
unsigned len1 = sizeof(short);
unsigned len2 = sizeof(c);
unsigned len3 = sizeof d;
printf("整型占的字节大小:%u\n", len); // 4B,由 1B = 8bit 得出 4B = 32bit,32 位二进制的数,32 位为 1 的数换算成 10 进制也就是 int 的最大值为 4294967295
printf("短整型占的字节大小:%u\n", len1);
printf("长整型占的字节大小:%u\n", len2);
printf("长长整型占的字节大小:%u\n", len3);
return 0;
}