知识汇总,汇聚了各处书中内容、或者看到的视频、自己的学习资料等。
自用,散乱模式。
1、数据类型的基本分类有哪些?
2、有符号类型和无符号类型的含义?
2.这些类型的各种组合分别有哪些?英文字母表示下的类型名称是否有固定顺序要求以及名称缩写问题?
3.整形中,关于int 、short、long int 基本范围要求:
6、如何简单估计各类型的最大、最小取值范围?
7.关于C语言中各进制的使用细节说明?另,请说明为什么C语言允许使用这几种进制表示整数常量?
8.关于各类整型在表示时的细节问题?比如,对长整型,对长长整型,对无符号类型等(在十进制、八进制、十六进制下)。
10、关于整数类型的读写问题。
10.1 基本认知:当发生整数溢出时,除了改变变量的类型,还需要对类型的相关转换说明符做检查与调整。
10.2 一个例子: 说明了关于不同类型的转换说明符使用错误时会发生的情况。
10.3 读写各类型所需要使用的转换说明符
需要理解图示含义。
1.整型在内存空间是如何存储的?为什么整数数据在内存空间是这种存储方式?
存储方式: 整型数据在内存空间中是以补码达到形式存储。
原因: 在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统 一处理;同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互换,其运算过程是相同的,不需要额外的硬件电路。
2.如何理解原码、反码、补码?它们之间如何转换?如何理解符号位和数值位?
1. 什么样的数据会涉及到存储顺序?为什么会涉及到存储顺序?
数据大于一个字节时,只要依据其存储方式按照一定规律取出,就能还原原数据,因此会产生多种存储方式。
2.什么是大端字节序存储?什么是小端字节序存储?
大端字节序存储: 把数据的低位字节存放在内存的高地址处,高位字节存放在内存的低地址处
小端字节序存储: 把数据的低位字节存放在内存的低地址处,高位字节存放在内存的高地址处
一个关于浮点型数据存储的例子:
1、浮点型数据有哪些分类?其区别是什么?
2、关于浮点型数据的精度存储问题?如何确定编译器下各浮点型的存储范围?
2.2 基于IEEE标准对单精度浮点型和双精度浮点型的探讨问题
3、浮点型数据在C语言中的一些规则问题,以及不同浮点型数据的表示问题?
3.1 浮点常量默认存储类型:
此处注意与强制类型转换区别开来:float a=3.14f, 系统默认储存类型为float。float a=(float)3.14,系统默认储存类型为double,然而被强制类型转换为float。
3、char类型数据存储和取值范围
3.2 char、short类型数据在内存空间中的存储
关于算术转换中需要注意的事项?(例如:有符号型和无符号型混用时的算术转换)
强制类型转换的例子其一:
强制类型转化的例子其二
关键点:在于理解使用强制类型转换的场景。
题一:
1.//以下输出什么?
#include
int main()
{
char a= -1;
signed char b=-1;
unsigned char c=-1;
printf("a=%d,b=%d,c=%d",a,b,c);
return 0;
}
2.//以下输出什么?
#include
int main()
{
char a = -128;
printf("%u\n",a);
return 0;
}
3.
#include
int main()
{
char a = 128;
printf("%u\n",a);
return 0;
}
题四、五:
4.
int i= -20;
unsigned int j = 10;
printf("%d\n", i+j);
//按照补码的形式进行运算,最后格式化成为有符号整数
5.
unsigned int i;
for(i = 9; i >= 0; i--)
{
printf("%u\n",i);
}
题六:
6.
int main()
{
char a[1000];
int i;
for(i=0; i<1000; i++)
{
a[i] = -1-i;
}
printf("%d",strlen(a));
return 0;
}
读取‘\0’前的字符数,‘\0’的ascll码值为0,即读取-1到-128共128个,127到1共127个,总共127+128=255个
7.
#include
unsigned char i = 0;
int main()
{
for(i = 0;i<=255;i++)
{
printf("hello world\n");
}
return 0;
}
使用无符号类型做循环时需要慎重,数值溢出后无符号范围内又为0