1. 数据类型简介与变量
1. 数据类型
1.字符型
char //character
[signed] char //有符号的
unsigned char //⽆符号的
2.//整型
int
[signed] int
unsigned int
//短整型
short [int]
[signed] short [int]
unsigned short [int]
//⻓整型
long [int]
[signed] long [int]
unsigned long [int]
3.浮点型
float //单精度浮点型
double 双精度浮点型
long double 复合型数据类型
在 C99 中也引⼊了 布尔类型 ,是专门表示真假的,_Bool 的使用需包含头文件 <stdbool.h>,布尔类型变量的取值是: true 或者 false .如:flag为真,下列代码输出 " hello world "。
2. 变量
1. 变量的创建
了解清楚了类型,我们要知道类型是⽤来创建变量的。 C语言中把经常变化的值称为变量,不变的值称为常量,如直接出现在源代码中的值:
整形常量:1,3,5 ; 浮点常量:3.14,2.15 ; 字符常量:'A' , 'b' 等,也可以是 const 关键字定义的常量,常量一旦定义就不可被修改。
变量创建的语法形式是这样的
如:int age / /整形
char name / /字符型
double weight / /浮点型
初始化 :初始化变量在创建的时候就给⼀个初始值,就叫初始化 如:
int age = 18;
char ch = 'w';
double weight = 48.0;
在定义变量时,建议同时初始化变量,可以避免不少潜在性的问题。
2. 变量的分类
根据作用域的不同,可以将变量分为全局变量和局部变量。
全局变量:在大括号外部定义的变量就是全局变量 全局变量的使用范围更广,整个工程中想使用,都是有办法使用的
局部变量:在大括号内部定义的变量就是局部变量 局部变量的使用范围是比较局限,只能在自己所在的局部范围内使用的
其实当局部变量和全局变量同名的时候,局部变量优先使⽤。这里 printf 打印的数值是20。
⼀般我们在学习C/C++语言的时候,我们会关注 内存中的三个区域:栈区、堆区、静态区。
1. 局部变量是放在内存的栈区
2. 全局变量是放在内存的静态区
3. 堆区是用来动态内存管理的
2. sizeof, strlen 和 数据类型长度
1.sizeof
sizeof 是⼀个关键字,也是操作符,专门是⽤来计算sizeof的操作符数的类型才度的,单位是字 节。 sizeof 操作符的操作数可以是类型,也可是变量或者表达式。计算结果是 size_t 类型
size_t = sizeof( 类型 )
size_t = sizeof (表达式) / /表达式的括号可省略
sizeof 后边的表达式是不真实参与运算的,根据表达式的类型来得出大小。(进行编译的时候,就根据表达式的类型确定了)
2. 各种数据类型的长度
每⼀种数据类型都有自己的长度,使用不同的数据类型,能够创建出⻓度不同的变量,变量长度的不 同,存储的数据范围就有所差异。
sizeof 可以算出各个数据类型的字节大小,了解不同类型的大小,在书写代码时能对变量进行更合适的定义,减少内存空间的浪费。
3.strlen
在C语言中,' strlen ' 函数是 C 标准库函数之一,它用于计算以空字符 (' \0 ') 结尾的字符串的长度。空字符是 C 语言中字符串的结束标志,但不包括在字符串的实际长度内。使用 strlen 需包含头文件 <string.h> ,返回值类型为 size_t 。
使用 strlen 要注意以下点:
1. strlen 函数只计算到第一个空字符,如果字符串中间包含空字符,它将只计算到第一个空字符之前的部分。
2.使用 strlen 计算数组中都字符长度时,需确保数组中有元素 \0 结尾,否者计算完数组中的字符长度后,会继续向后计算随机值,知道遇到 \0。
3.strlen 函数的返回值不包括空字符,所以如果你想知道字符串可以存储多少字符(包括空字符),你应该在 strlen 的结果上加 1。
3.算术操作符:+、-、*、/、%
1.+、-、*、/、%的注意点
1. 加 减 乘 除的运算是我们在熟悉不过的了,这里主要注意 ' * '(乘)和 '/ '在打印输出的细节。如:
上面示例中,尽管变量 x 的类型是 float (浮点数),但是 6 / 4 得到的结果是 1.0 ,而不是 1.5 。原因就在于 C语言 里面的整数除法是整除,只会返回整数部分,丢弃小数部分。如果希望得到浮点数的结果,两个运算数必须⾄少有⼀个浮点数,比如将 6 改为 6.0 这时 C语言就会进行浮点数除法。
又如:
上面的代码会得到0,这是因为 score / 20 是整除,会得到⼀个整数值 0 ,所以乘以 100 后得到的也是 0 。 为了得到预想的结果,可以将除数 20 改成 20.0 ,让整除变成浮点数除法。
2. 运算符 % 表示求模(余)运算,即返回两个整数相除的余值。这个运算符只能用于整数,不能用于浮点数。
负数求模的规则是,结果的正负号由第⼀个运算数的正负号决定。