C基础学习笔记——01-C基础第04天(数据类型与运算符)

在学习C基础总结了笔记,并分享出来。有问题请及时联系博主:Alliswell_WP,转载请注明出处。

01-C基础第04天(数据类型与运算符)

目录:

1、数据类型的定义
2、进制
3、计算机内存数值存储方式
4、sizeof关键字
5、整型
6、char类型
7、实型(浮点型):float、double
8、类型限定符
9、字符串格式化输出和输入

1、数据类型的定义

变量的定义

数据类型 变量名【标识符】

变量的赋值

变量名 = 值;

数据类型 变量名【标识符】= 值

变量在使用前必须先定义,定义变量前必须有相应的数据类型

标识符命名规则:
(1)字母、数字、下划线

(2)不能以数字开头

(3)见名知义

(4)不能和同一函数内的其他标识符重复

(5)不能使用C语言关键字

(6)区分大小写

举例判断

ABC

--abc.

123_bac

a_b_123

常量的定义:

(1)const 数据类型 常量名

(2)【宏定义】#define 常量名 值

注意:

(1)通过#define定义的常量是根据值来匹配数据类型的

(2)const修饰的常量是不安全的,可以通过指针来修改

2、进制

数据在计算机中都是以二进制补码的形式存储的!

二进制

  二进制逢二进一,所有的数组是0、1组成

10+1 = 11

11+1 = 100

十进制转二进制——除二反序取余法

1987 = 0111 1100 0011

 二进制转十进制——权值法

八进制

  逢八进一,所有的数组是0到7组成

十进制转八进制——除八反序取余法

八进制转化为二进制——八四二一法则:将各个位数的二进制用十进制中的数字来表示,多余的二进制数,通过数字相加就可以得到二进制的数据

十六进制:

  逢十六进一,所有的数组是0到9和A到F组成,字母不区分大小写

十进制转十六进制——除十六反序取余法

十六进制转化为二进制——八四二一法则:将各个位数的二进制用十进制中的数字来表示,多余的二进制数,通过数字相加就可以得到二进制的数据

进制在程序中打印:

int a = 10;//十进制中的10

int b = 010;//八进制中的10,在程序中定义一个八进制数需要在数前面加上0区分

int c = 0x10;//十六进制中的10,在程序中国定义一个十六进制数需要在数前面加上0x区分

int d = 0X10;//十六进制中的10

%d //将数据按照十进制输出

%o //将数据按照八进制输出

%x //将数据按照十六进制小写输出

%X //将数据按照十六进制大写输出

3、计算机内存数值存储方式

在计算机系统中,数值一律用补码来存储,主要原因是:

(1)统一了零的编码

(2)将符号位和其它位统一处理

(3)将减法运算转变为加法运算

(4)两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃
溢出:在数据进行操作的时候会导致超出数据类型大小,会向前位进1,多于原始数据类型大小,会被系统自动舍弃,保留从后面开始数据类型大小的位数

练习:用生辰年份年去生辰日期

 1992 - 326 = ?

步骤:

(1)将十进制转化为二进制

(2)加符号位将数据变为原码

(3)转化为反码

(4)将反码+1转化为补码

(5)计算补码

(6)将数据转化为10进制

C基础学习笔记——01-C基础第04天(数据类型与运算符)

2+128+512+1024 = 1666

4、sizeof关键字

求出数据类型在内存中占的大小

int value = sizeof(变量名);

注意:根据32位操作系统获取的数据类型大小

char(字符型)【1】<short(短整型)【2】<=int(整型)【4】| float(单精度浮点型)【4】 | long(长整型)【4】<long long(长长整型)【8】 | double(双精度浮点型)【8】

5、整型

注意:
(1)整型数据在内存中占的字节数与所选择的操作系统有关。虽然 C 语言标准中没有明确规定整型数据的长度,但 long 类型整数的长度不能短于 int 类型, short 类型整数的长度不能短于 int 类型。
(2)当一个小的数据类型赋值给一个大的数据类型,不会出错,因为编译器会自动转化。但当一个大的类型赋值给一个小的数据类型,那么就可能丢失高位。

6、char类型

字符型变量用于存储一个单一字符,在 C 语言中用 char 表示,其中每个字符变量都会占用 1 个字节。在给字符型变量赋值时,需要用一对英文半角格式的单引号(' ')把字符括起来。

字符变量实际上并不是把该字符本身放到变量的内存单元中去,而是将该字符对应的 ASCII 编码放到变量的存储单元中。char的本质就是一个1字节大小的整型。

ASCII 码大致由以下两部分组成

(1)ASCII 非打印控制字符: ASCII 表上的数字 0-31 分配给了控制字符,用于控制像打印机等一些外围设备。

(2)ASCII 打印字符:数字 32-126 分配给了能在键盘上找到的字符,当查看或打印文档时就会出现。数字 127 代表 Del 命令。

7、实型(浮点型):float、double

在C语言中, 浮点型变量分为两种: 单精度浮点数(float)、 双精度浮点数(double), 但是double型变量所表示的浮点数比 float 型变量更精确。

8、类型限定符

限定符

含义

extern

声明一个变量,extern声明的变量没有建立存储空间。

extern int a;

const

定义一个常量,常量的值不能修改。

const int a = 10;

volatile

防止编译器优化代码

register

定义寄存器变量,提高效率。register是建议型的指令,而不是命令型的指令,如果CPU有空闲寄存器,那么register就生效,如果没有空闲寄存器,那么register无效。

9、字符串格式化输出和输入

(1)字符串是内存中一段连续的char空间,以' '(数字0)结尾。

(2)字符串常量是由双引号括起来的字符序列,如“china”、“C program”,“$12.5”等都是合法的字符串常量。
每个字符串的结尾,编译器会自动的添加一个结束标志位' ',即 "a" 包含两个字符'a'和’