Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
172 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,172 @@ | ||
# C 语言 整型 int | ||
|
||
## unsigned 无符号定义变量 | ||
|
||
1. 默认声明的变量是有符号的`signed`,表示可以是正数,可以是负数。 | ||
2. 无符号定义时不能是负数,赋值了负数时输出的值不是想要的值。 | ||
3. 无符号使用`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,但输入不是数字时会出现异常,解决方法: | ||
|
||
1. 在程序第一行添加代码`#define _CRT_SECURE_NO_WARNING` | ||
2. 或添加一行`#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 字节 | | ||
|
||
:::warning 注意 | ||
|
||
1. 需要注意的是,整型数据在内存中占的字节数与所选择的操作系统有关。虽然 C 语言标准中没有明确规定整型数据的长度,但 long 类型整数的长度不能短于 int 类型, short 类型整数的长度不能长于 int 类型。 | ||
2. 当一个小的数据类型赋值给一个大的数据类型,不会出错,因为编译器会自动转化。但当一个大的类型赋值给一个小的数据类型,那么就可能丢失高位。 | ||
::: | ||
|
||
### 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; | ||
} | ||
``` |