C语言基础教程目录:https://blog.csdn.net/SparkLee2013/article/details/85229406
1、有符号和无符号整型数据
C语言中定义的整型变量,默认都是有符号的,故关键字signed是可以省略不写的;但若是想要定义一个无符号的变量,则必须加unsigned关键
#include <stdio.h>
void main() {
// 定义有符号整型变量
int a = -10;
signed int a1 = 25; // signed可省略不写
printf("a = %d\n", a);
printf("a1 = %d\n", a1);
// 定义无符号整型变量
unsigned int b = 15;
printf("b = %u\n", b);
}
# 输出结果:
a = -10
a1 = 25
b = 15
有符号和无符号变量的区别:
- 有符号数的最高位是符号位,0代表是正数,1代表是负数
- 无符号数的最高位不是符号位,而是数的一部分,无符号数都是正数,不可能是负数
2、prinf()整型变量输出占位符
int整型变量输出占位符:
- %d:输出一个有符号的10进制int变量
- %u:输出一个无符号的10进制int变量
- %o:输出8进制的int变量
- %x:输出16进制的int变量,字母以小写输出
- %X:输出16进制的int变量,字母以大写输出
- %%:输出一个'%'字符
#include <stdio.h>
void main() {
int a = 10;
printf("Decimal a = %d\n", a); // 以十进制形式输出
printf("Octal a = %o\n", a); // 以八进制形式输出
printf("Hexadecimal(lower) a = %x\n", a); // 以十六进制(小写)形式输出
printf("Hexadecimal(upper) a = %X\n", a); // 以十六进制(大写)形式输出
unsigned b = 13;
printf("unsigned Decimal b = %u\n", b); // 输出一个无符号的10进制int变量
}
# 输出结果:
Decimal a = 10
Octal a = 12
Hexadecimal(lower) a = a
Hexadecimal(upper) a = A
unsigned Decimal b = 13
其他整型变量输出占位符:
- %hd:输出一个有符号的 short 变量
- %d: 输出一个有符号的 int变量
- %ld: 输出一个有符号的 long 变量
- %lld:输出一个有符号的 long long 变量
- %hu:输出一个无符号的 short 变量
- %u: 输出一个无符号的 int 变量
- %lu: 输出一个无符号的 long 变量
- %llu:输出一个无符号的 long long 变量
#include <stdio.h>
void main() {
short a = 20;
int b = 10;
long c = 30;
long long d = 40;
printf("short a = %hd\n", a); // 输出一个有符号短整型数据
printf("int b = %d\n", b); // 输出一个有符号整型
printf("long c = %ld\n", c); // 输出一个有符号长整型数据
printf("long long d = %lld\n", d); // 输出一个有符号长长整型数据
printf("\n");
unsigned short a2 = 20;
unsigned int b2 = 10;
unsigned long c2 = 30;
unsigned long long d2 = 40;
printf("unsigned short a2 = %hu\n", a2); // 输出一个无符号短整型数据
printf("unsigned int b2 = %u\n", b2); // 输出一个无符号整型
printf("unsigned long c2 = %lu\n", c2); // 输出一个无符号长整型数据
printf("unsigned long long d2 = %llu\n", d2); // 输出一个无符号长长整型数据
}
# 输出结果:
short a = 20
int b = 10
long c = 30
long long d = 40
unsigned short a2 = 20
unsigned int b2 = 10
unsigned long c2 = 30
unsigned long long d2 = 40
3、定义其他进制整型数据
- 定义一个八进制整型数据:以0开头
- 定义一个十六进制整型数据:以0x开头
#include <stdio.h>
void main() {
// 定义一个八进制整型数据
int a = 012;
printf("Decimal a = %d\n", a); // 以十进制形式输出
printf("Octal a = %o\n", a); // 以八进制形式输出
printf("Hexadecimal(lower) a = %x\n", a); // 以十六进制(小写)形式输出
printf("Hexadecimal(upper) a = %X\n", a); // 以十六进制(大写)形式输出
// 定义一个十六进制整型数据
int b = 0xa;
printf("\n");
printf("Decimal b = %d\n", b); // 以十进制形式输出
printf("Octal b = %o\n", b); // 以八进制形式输出
printf("Hexadecimal(lower) b = %x\n", b); // 以十六进制(小写)形式输出
printf("Hexadecimal(upper) b = %X\n", b); // 以十六进制(大写)形式输出
}
# 输出结果:
Decimal a = 10
Octal a = 12
Hexadecimal(lower) a = a
Hexadecimal(upper) a = A
Decimal b = 10
Octal b = 12
Hexadecimal(lower) b = a
Hexadecimal(upper) b = A
4、整型取值范围
int取值范围:
#include <stdio.h>
void main() {
printf("sizeof(int) = %u\n", sizeof(int));
printf("\n");
// 有符号int变量取值范围:[-2147483648, 2147483647]
int a = 2147483647;
// 无符号int变量取值范围:[0, 4294967295]
unsigned int b = 4294967295;
printf("a = %d\n", a);
printf("ax = %X\n", a);
printf("a2 = %d\n", a + 1);
printf("\n");
printf("b = %u\n", b);
printf("bx = %X\n", b);
printf("b2 = %u\n", b + 1);
}
# 输出结果:
sizeof(int) = 4
a = 2147483647
ax = 7FFFFFFF
a2 = -2147483648
b = 4294967295
bx = FFFFFFFF
b2 = 0
5、通过键盘输入赋值
#include <stdio.h>
void main() {
// 定义一个整型变量
int a;
// 通过键盘输入对变量a进行赋值,使用占位符"%d",'&'是取地址操作
scanf("%d", &a);
// 打印变量a的值
printf("a = %d\n", a);
}