Date 2020-09-19
数据类型
数据类型功能:
让编译器预算出将来这个变量要分配的内存大小,将来就可以知道要访问操作内存多大的操作
C语言程序12类基本数据类型
(GCC默认规定的):
切记:①unsigned int 和 unsigned long 对于GCC编译器来说不同
②对于32/64位操作系统,unsigned int 都是4字节
③对于32位系统 unsigned long 是4字节, 对于 64位操作系统 unsigned long 是8字节
利用 sizeof 关键字可以获取变量的或者数据类型分配的大小
/*
date 2020-09-19
sizeof求数据类型分配内存
*/
#include <stdio.h>
int main (int argc char* argv[]) {
char a = 1;
unsigned char b = 2;
printf("sizeof(a) = %d,sizeof(char) = %d\n",sizeof(a),sizeof(char));
printf("sizeof(b) = %d,sizeof(unsigned char) = %d\n",sizeof(b),sizeof(char unsigned));
// sizeof 赋值无效
int i = 520;
sizeof(i = 250);
printf("i = %d\n",i); // 结果依旧为520
return 0;
}
数据类型 char 和 usigned char
字符常量概念 单引号括起来表示 ,其值固定不变
字符变量 (用char 或者 unsigned char 定义的变量,分配1字节内存)存储的数据本质是字符常量对应的整数 --- ASCII 码
字符变量打印输出占位符 %c (字节形式) 或者%d(整数形式)
/*
date 2020-09-19
字符类型数据演示
*/
#include <stdio.h>
int main (int argc,char* argv[]) {
char var = 'L';
printf("按字符型输出%c,按整型输出%d\n",var,var);
char var1 = 107;
printf("%c\n",var1);
printf("var - var1 = %d\n",val);
return 0;
}
转义字符
*%% -- > 输出一个%
\n 光标移至下一行行首
\r 光标移动至当前行行首(会覆盖当前行内容)
\\t -- 输出一个TAB 键
\\ --> 输出一个 \
\' -- > 输出一个 '*
// printf("abc\rdef\n\t123\\efg\'mn\"hjk%%\n");
整数类型
整形数据类型关键字 int 可代表两字节或4字节数据
short
unsigned short
long
unsigned long
long long
unsigned long long
int 类型 的六种形式
① 形式:
short a = 250;
short int a = 250;
②形式:
unsigned short a = 250;
unsigned short int a = 250;
③形式:
long a = 250;
long int a = 250;
④形式:
unsigned long a = 250;
unsigned long int a = 250;
⑤形式:
int a = 250;
⑥形式
unsigned int a = 250;
整形常数
100 :GCC 默认为 int 类型
100L:GCC 默认为 long类型
100LL:GCC 默认为 longlong类型
100u:GCC 默认为unsigned 类型
100UL:GCC 默认为 unsigned long 类型
作用:用于数据类型的转换
浮点数 double 和 float
1.23: GCC 默认为 double 类型;
1.23f:GCC 默认为 float 类型;
注意:浮点数在计算机中是一个无限趋近的值,例如 :1.2300000001 是无限趋近于1.23
***CPU对浮点数的运算极慢***
数据类型和对应的占位符
/*
date 2020-09-20
数据类型和占位符操作演示
*/
#include <stdio.h>
int main (int argc,char* argv[])
{
char a = 97;
unsigned char b = 'B';
printf("%c,%hhd\n",a,a);
printf("%c,%hhu\n",b,b);
// 浮点数
float c = 25.37;
double d = 25.37;
printf("%f,%g\n",c,c);
printf("%lf,%lg\n",d,d);
return 0;
}
进制转换
①计算机中的数据数字都是在硬件内存中进行储存,并且这些数据数字都是以二进制的形式储存
②计算机把内存中每个字节分成8段 ,每段只记录0和1 每段简称 位 比特 bit (b)
内存中最小储存单元
1 Byte = 8bit
2进制和10进制之间的转换
负数的10进制和2进制之间转换(需借助相反数 取反加1)
eg:(前提必须是 char 类型)
-25 ----- 25 ------ 0001 1001 ------ 1110 0110 +1 ----- 1110 0111