Bootstrap

C语言学习笔记 Day3(基本数据类型--上)

Day3 内容梳理:

1、Chapter 2  基本数据类型(共4小节):

        上(本文):2.1 关键字,2.2 数据类型(字符型、整型、浮点型)

        下(下一篇文):2.3 进制转换, 2.4 数据溢出问题

Chapter 2  数据类型

2.1 关键字

C语言共有32个关键字

数据类型关键字(12个)

字符型:char

整型:short ,int,long

浮点型:float,double

类型修饰符:signed,unsigned (无符号)

复合类型:struct (定义结构体),union (定义联合体),enum (枚举类)

空类型:void (表示函数返回值为空 / 函数没有参数 / void*表示万能指针)

控制语句关键字(12个)

条件判断类:

if / if - else / if - elif - ...- else

分支语句:switch,case,default

循环类:

for / do - while / while

约束语句:break,continue

跳转语句:goto (可以在任何位置进行跳转)

结束语句:return (在函数中结束本函数 / 在主函数中结束程序的执行)

存储类关键字(5个)

auto (在函数内部定义局部变量,一般情况可不写),

extern (声明,但在声明的时候可忽略此关键字),

register (标注将被频繁使用的变量,并将其保存在CPU寄存器中,加快访问),

static (定义静态数据和静态函数),

const (定义常量,是一种值不能发生改变的量,一般以全大写的方式命名)

其他关键字(3个)

sizeof (计算一种数据类型在内存中占的大小),

typeof (为一种已存在的数据类型起个别名 / 定义函数指针),

volatile (防止编译器优化)

补充:指针类型有char*,int*,int**,void*等等

2.2 数据类型

  2.2.0 常量 & 变量

(1)定义变量

格式:数据类型  变量名 = 值 ;

变量的命名规则:

        ①不能使用系统关键字,比如上面提到的char int float等等。

        ②可结合下划线、数字使用,比如total_price,price1 price2等。

        ③不允许以数字开头,比如price1可以,但1price不行。

        ④标识符区分大小写,比如a和A就是两个不同的变量。

        ⑤要见名知意,最好是能直接体现变量具备的功能、能进行的操作等。

(2)定义常量

常量有两种定义方式,二者区别在于 ; 和=

        ①宏定义:在函数外以定义,格式为:#define 大写的常量名  值 

        ②const关键字:在函数中定义,格式为:const 数据类型 常量名 = 值 ;

更推荐用第一种方式,因为第二种不太安全,在后续章节会学到用指针修改常量,不太安全。

例子:定义常量pi,假设半径为1,打印圆的面积

(3)打印语句的占位符

%d:输出一个有符号的10进制int类型(10和-10都能正确输出)
%f:输出浮点类型,四舍五入保留六位小数
signed:有符号,可以为正数或负数
%u:输出一个无符号的10进制int类型(能正确输出10,无法正确输出-10)
%x:输出一个八进制整型
%o:输出一个十六进制整型
%c:输出一个char类型的字符
 

  2.2.1 字符型(char)

char:只能存一个字符,并用单引号括起来。占位符为"%c"。

char的本质就是1字节大小的整型(通过ASCII码调取)。
(例如char ch = 'a';)
(例如char ch = '0';对应返回ASCII的48。与int a = 0;不同)
 

转义字符:

\\:代表一个反斜线字符 \
\n:代表换行
\':代表一个单引号
\":代表一个双引号(比如:printf("\"你好\"");   输出“你好”)
%%:代表一个百分号(比如:printf("30%%");输出30%)
\?:代表一个问号
\r:代表回车,将当前的位置移到本行开头
 

  2.2.2 整型(short / int / long)

(1) 输入 & 输出

可通过键入来给变量赋值,需要用到3个内容:

①键入语句 scanf()   

②赋值符号 &   

③一条位于#include代码之上的命令语句(红框圈起来的部分),以忽略系统对键入赋值不够安全的警告。不输入这条则程序无法运行。

如果输入的内容不是规定的类型,比如需要个int但输入的是float,则数据出错。

(2) 取值范围

当空间更大的类型接收一个空间更小的类型时,不会出错(因为占用空间足够放下)。

short <= int <= long,也就是说short类型可以放在int、long类型里,int类型可放long类型中。

但是long类型无法放入short和int类型中,会报错。

数据类型占用空间打印语句的占位符
short    短整型2字节%hd
int        整型4字节%d

long     长整型

Window为4字节

32位Linux为4字节

64位Linux为8字节

%ld  <--是小写的L

sizeof可以用于计算数据类型在内存中所占的字节(Byte)大小,而1 Byte = 8 Bit


  2.2.3 浮点型(float / double)

存储小数,分为单精度浮点型(float)、双精度浮点型(double)。

double型变量能表示的浮点数要比float型更精准,但是因为都会四舍五入,而产生一些误差。

定义方式:float a = 3.14F;  或者 long a = 34L

大小写无所谓,只是大写的话看得更清晰。

;