算法笔记系列:2.1基本数据类型
2.1.1 变量的定义
- 定义格式: 变量类型 变量名
- 条件: 不能是C语言标识符;变量第一个字母必须是字母或下划线;区分大小写
2.1.2 变量类型
-
整型
-
整型 int 占用 32bit (32位),即 4 Byte 字节,范围在 − 2 31 ∼ 2 31 − 1 -2^{31} \thicksim 2^{31}-1 −231∼231−1 大概范围在绝对值 1 0 9 10^9 109以内。
-
长整形 long long 占用64bit,即8字节,取值范围在 − 2 63 ∼ 2 63 − 1 -2^{63} \thicksim 2^{63}-1 −263∼263−1 即当提示整数取值会超过 1 0 10 10^{10} 1010时,就用 long long 型来存储。当赋予超过int范围的初值时,需要在后面加上 LL,否则会编译错误。
-
unsigned 无符号型 在类型前声明表示无符号,占用位数和原先相同,区别在于没有负数范围,取值范围从0开始。
-
-
浮点型
-
单精度 float 占用32bit,存放范围为 − 2 128 ∼ 2 128 -2^{128}\thicksim2^{128} −2128∼2128,有效精度只有6-7位
-
双精度 double 占用64bit,存放浮点数范围 − 2 1024 ∼ 2 1024 -2^{1024}\thicksim2^{1024} −21024∼21024,其有效精度有15-16位
-
对于浮点型来说,一般都用double存储
-
-
字符型
-
字符变量和字符常量 通过char声明,区别在于是否使用单引号标注起来,例如:char c = ‘c’,其中c为字符变量,'c’为字符常量。C语言中,字符常量使用ASCII码统一编码,小写字母比大写字母的ASCII值大32。%c是char型的输出格式。
-
转义字符 常用的\n 表示换行;\0表示空字符NULL,不是空格,其ASCII码为0
-
字符串常量 C语言中只有字符数组的方式,C++中有string类型可以存储。字符串常量由双引号标记,使用%s的格式输出
#include<stdio.h> int main(){ char str1[25]="wo ai de ren bu ai wo"; char str2[25]="so sad a story it is."; printf("%s, %s",str1,str2); return 0; } 输出: wo ai de ren bu ai wo, so sad a story it is.
-
布尔型 bool 布尔型在C++中可以直接使用,在C语言中必须添加stdbool.h头文件才行。取值为true和false。值得注意的是,整型常量赋值给布尔型变量时会自动转换为true(非零)或者false(零),但是在存储时,是将它们用1和0存储,即当用%d输出布尔型时,true输出为1,false输出为0
-
2.1.3 强制类型转换
格式如下:(新类型名)变量名
2.1.4 符号常量和const常量
本质上是替换,即用一个标识符来替代常量,两种方式格式如下:
-
# define 标识符 常量 (注意末尾不加分号)
-
const 数据类型 变量名=常量
一般推荐const的写法
2.1.5 运算符
-
算术运算符
-
/ 除法运算符 需要注意的是,当被除数跟除数都是整型时,并不会得到一个double浮点型的数,而是直接舍去小数部分
-
% 取模运算符 取前面的数除以后面的数得到的余数
-
自增运算符 主要注意 i++ 和 ++i的区别。i++ 是先使用i再将i加1,而++i则是先将i加1再使用i
-
-
关系运算符
-
逻辑运算符
常用的有三种:&& 与;|| 或;!非; -
条件运算符
( ? : )是C语言中唯一的三目运算符,格式如下:A? B: C 含义是如果A为真,那么执行并返回B的结果,如果A为假,那么执行并返回C的结果
-
位运算符
运算符 | 含义 | 语法 | 效果 |
---|---|---|---|
<< | 左移 | a<<x | 整数a按二进制位左移x位 |
>> | 右移 | a>>x | 整数a按二进制位右移x位 |
& | 位与 | a&b | 整数a和b按二进制对齐,按位进行与运算(除了11得1,其余均为0) |
| | 位或 | a|b | 整数a和b按二进制对齐,按位进行或运算(除了00得0,其余均为1) |
^ | 位异或 | a^b | 整数a和b按二进制对齐,按位进行异或运算(相同为0,不同为1) |
~ | 位取反 | ~a | 整数a的二进制的每一位进行0变、1变0的操作 |