第六章 数据的基本类型

目录

6.1 整型

一、类型

二、进制

三、整数溢出

四、输入/输出整数的转换说明符

6.2 浮点型

一、类型

二、输入/输出浮点数的转换说明符

6.3 字符类型(char)

一、字符操作的原理

二、类别

三、字符处理方法

(一)、大小写字母的互相转换

(二)、判断字符是否为字母

 ......

四、输入/输出字符

(一)  调用 scanf 函数与 printf 函数

(二)  调用 getchar 函数与 putchar 函数

1° getchar 函数用于输入单个字符

2° putchar 函数用于输出单个字符 

※补充:惯用法 

五、数字转义序列

※类型转换

一、隐式转换

二、显式转换(强制转换)

※sizeof运算符(表达式)


6.1 整型

一、类型

(一)  短整型short (int)

(二)  整型int

(三)  长整型long (int)

(四)  长长整型long long (int)

※补充

(一)  范围大小(即内存大小short  ≤  int  ≤  long  ≤  long long

(二)  整数分为:1°有符号整数:正整数与零

                           2°无符号整数(unsigned):负整数

二、进制

(一)  二进制:由 0、1 组成  (代码中以 0b 或 0B 开头)

(二)  八进制:由 0~7 组成  (代码中以数字 0 开头)

(三)  十进制:由 0~9 组成  (无特殊开头标识)

(四)  十六进制:由 0~9 以及 A~F(或 a~f)组成  (代码中以0x或0X开头, 十六进制中的A~F依次表示10~15)

三、整数溢出

(一)含义:某一整型数据的值超出了该数据的整型类型所能表示的范围的现象

(二)结果:1°有符号整数溢出时,结果未定义

                 2°无符号整数溢出时,结果有定义

四、输入/输出整数的转换说明符

八进制 十进制 十六进制
整型 %o %d(有符号)
%u(无符号)
%x
短整型 %ho %hd(有符号)
%hu(无符号)
%hx
长整型 %lo %ld(有符号)
%lu(无符号)
%lx
长长整型 %llo %lld(有符号)
%llu(无符号)
%llx

※补充:  转换说明符中的大小写并没有影响


6.2 浮点型

一、类型

(一)  单精度浮点数float

(二)  双精度浮点数double

(三)  扩展精度浮点数:long double

※补充

范围大小  (即内存大小):  整型  <  float  <  double  <  long double

二、输入/输出浮点数的转换说明符

浮点类型 格式说明符(输出) 格式说明符(输入)
float %f 或 %e 或 %g
double %f 或 %e 或 %g %lf 或 %le 或 %lg
long double %lf 或 %le 或 %lg

6.3 字符类型(char

一、字符操作的原理

字符常量事实上为 int 型而非 char 型

二、类别

(一)  有符号字符:signed char

(二)  无符号字符:unsigned char

三、字符处理方法

(一)、大小写字母的互相转换

1.  使用 if 语句

//以下 if 语句: 将大写字母转换为小写字母,非大写字母则保持不变
if ('a' <= ch && ch <= 'z') { 
    ch = ch - 'a' + 'A'; 
}

//以下 if 语句: 将小写字母转换为大写字母,非大写字母则保持不变
if ('A' <= ch && ch <= 'Z') { 
    ch = ch - 'A' + 'a'; 
}

2. 调用 toupper 库函数或 tolower 库函数

//toupper 函数和 tolower 函数属于  头文件中
#include  

//以下语句: 将大写字母转换为小写字母,非大写字母则保持不变
ch = toupper(ch);

//以下语句: 将小写字母转换为大写字母,非大写字母则保持不变
ch = tolower(ch);

理解:

(1)  toupper 函数检测其后括号中的参数  (此处为ch) 是否为小写字母. 若是, 则将参数转化为相应的大写字母, 并将其赋值到 ch 中; 若不是,则返回参数值 

(2) tolower 函数检测其后括号中的参数 (此处为ch) 是否为大写字母. 若是, 则将参数转化为相应的小写字母, 并将其赋值到 ch 中; 若不是, 则返回参数值 

(二)、判断字符是否为字母

//isalpha 函数属于  头文件中
#include  

//以下语句: 判断字符是否为字母, 若是则返回非零值,否则返回 0
isalpha(c);

 ......

四、输入/输出字符

(一)  调用 scanf 函数与 printf 函数

※补充

1° 转化说明符为  “%c

在输入 (读入) 字符时, scanf函数不会跳过空白字符, 若要强制跳过, 则需格式:

//%c 前加入空格
scanf(" %c", &ch);

(二)  调用 getchar 函数与 putchar 函数

1° getchar 函数用于输入单个字符

ch = getchar( ); 
//以上相当于  scanf ("%c", &ch);

※补充

A.  getchar 函数在输入字符时同样不会跳过空白字符

B. 若不需将输入的字符储存再变量中时,可省去变量, 即:
 

getchar( ); 

该格式常用于避免 .exe 文件快退, 判断条件时需输入特定或随意输入某字符等中

2° putchar 函数用于输出单个字符 
putchar(ch); 
//以上相当于  printf("%c", ch);
※补充:惯用法 

 1°搜索某字符

while ((ch = getchar( )) != '目标字符') {
    ;
}

2°跳过某字符

while ((ch = getchar( )) == '目标字符') {
    ;
}

五、数字转义序列

(一)  八进制转义序列:    “\” + 八进制(该八进制不一定以零开头,且最多含三位数)

(二)  十六进制转义序列:“\” + 十六进制


※ 类型转换

一、隐式转换

(一)  进行条件:当不同类型的数据进行计算赋值等操作时, 将会触发隐式转换

(二)  转换规则

        1°范围大的类型与范围小的类型进行操作时 , 范围小的类型会转换为范围大的类型, 再进行操作

        (大+小 -> 大+大

        2°cha r型、short 型在进行操作时, 都会先转换为 int 型, 再进行操作

二、显式转换(强制转换)

(一)进行条件:将范围大的类型转换为范围小的类型,将会触发显式转换

(二)强制转换表达式:

(类型名)表达式;

        ※理解:表达式的值的类型会转换为括号中的类型 

三、优先级:  (类型名)为一元运算符


※ sizeof运算符(表达式)

格式: 

sizeof(类型名)

一、作用允许程序储存指定的类型名的空间大小

二、优先级sizeof为一元运算符

三、相应的转换说明符%zu 

你可能感兴趣的:(算法)