基本数据类型
1.基本数据类型
编译器要处理数据 那么就需要知道数据的存储大小和存储方式(即数据类型)
常用的四种基本数据类型 char int float double
-
整数 整型
- int 存放整数(可正可负)
- short (int) 2个字节
- long (int) 4个字节
- long long(int) 8个字节
-
小数 浮点型
- 浮点型
- 单精度浮点型 float 4个字节
- 精确的数字和位数 6~7
- 双精度浮点型 double 8个字节
- 精确的数字和位数 16~17
- 单精度浮点型 float 4个字节
- 浮点型
-
字符型 字母
-
char 英文字符
-
字符 (代码可以当作整型处理)
-
字符和整数一一对应 对应的整数称为字符的ASCII码 0-127
实质上char -128~127 1个字节 字符要用单引号括起来 和数字区分
-
-
-
基本数据类型总结
-
数据的存储大小
char short int long long long float double 16位 1 2 2 4 8 4 8 32位 1 2 4 4 8 4 8 64位 1 2 4 8 8 4 8 -
需要记得 char int float double
-
整型int
-
存放整数的类型 占4个字节 范围-231~231-1
-
int (integer) 整数
-
存放0,1,2,3,4这种整数(不能带小数)
-
-
浮点型 float/double
- float 单精度浮点型 4个字节 精确到小数点后面6~7位 存放数据范围 -3.4*10(-38)~3.4*10(38)
- double 双精度浮点型 8个字节 可以精确到小数点后面16~17位 -1.7*10(-308)~1.7*10(308)
-
字符类型 char
- 存放字符类型 大小一个字节
- 本质上是整数类型 可以存放**-128~127**范围内的整数 ,0~127范围的整数 每个整数都用来对
- 应一个字符,这个整数就称之为这个字符的ASCII码(对应关系可以参考ASCII码表)
- 使用的时候 使用字符和使用他的ASCII都可以
-
double存放范围大 精度高 float占用内存小 运算速度快
-
精度要求高或者存放数据大用double 不然用float
-
-
2. 命名方式
-
标识符命名规范
标识符 编程人员自己定义的名字 变量名/函数名/….
-
命名规定
- 必须由字母数字 下划线 美元符号组成
- 不可以是数字开头
- 有些标识符被系统使用了,因此在定义标识符的时候不能和系统的标识符(关键字)重复
- 了解C语言32个关键字
-
常用的命名规则
- -----驼峰命名法
- 特点 多个单词组合 除第一个单词外每个单词的首字母大写(也称小驼峰)
- 示例 iPadMini mciSendSrting
- -----帕斯卡命名法
- 特点:每一个单词的首字母大写 其余小写(也称大驼峰)
- 示例: FirstName OuGuang
- -----匈牙利命名法
- 开头字母用变量类型的缩写 其余部分用变量的英文或者英文缩写,单词首字母大写
- 示例 iMyAge cMyName fManHeight
- -----驼峰命名法
-
全大写 常量
#define MAXSIZE 10
-
_t 一般是别名
size_t time_t
-
3.定义变量
定义变量的格式是 类型 变量名
-
类型比如上面说过的int double 变量名可以自取
//比如 int a;//定义一个整型变量a
-
定义变量的时候可以用给他赋值
char ch=‘A’; //字符要加单引号’ ‘ //或者先定义然后赋值 char ch; ch=65; //字符类型可以直接使用ASCII码(这个是数字 不要加单引号)
4.输入输出
-
输入或者输出变量
#include<stdio.h> int main() { /********整型*********/ int y; //准备变量 printf("请输入一个整型"); scanf("%d", &y); // 注意 scanf 要取地址 & printf("用户输入的内容是%d\n", y); /********字符型********/ char ch; //准备变量 printf("请输入一个字符"); scanf("%c", &ch); // 注意 scanf 要取地址 & printf("用户输入的内容是%c\n", ch); /********单精度浮点型*********/ float a; //准备变量 printf("请输入一个float型"); scanf("%f", &a); // 注意 scanf 要取地址 & printf("用户输入的内容是%f\n", a); /********双精度浮点型*********/ double b; //准备变量 printf("请输入一个double型"); scanf("%lf", &b); // 注意 scanf 要取地址 & printf("用户输入的内容是%lf\n", y); return 0; }
- scanf 获取用户输入的数据 将数据存放在变量中
- scanf(“格式占位符”,&变量)
- 比较严格 %f %lf 不能混用
- scanf 获取用户输入的数据 将数据存放在变量中
-
格式占位符说明变量类型
%d 输入或者输出一个int %c 输入或者输出一个char %f 输入或者输出float %lf 输入或者输出一个double - 对于%f %lf 在输出的时候是一样的 默认打印6位小数
#include<stdio.h> int main() { double a = 1; float b = 1; printf("float:%f,double:%lf\n", a, b); return 0; }
打印结果:float:1.000000,double:1.000000
-
输出控制
除了基本的输出之外,printf还提供了一系列输出控制,以便使输出的内容更加整齐正式
完整的printf 格式 %[标志] [宽度] [.精度]type
-
最小宽度控制 仅限整型
printf(“%4d”,3);
%4d中的4表示 最少输出4位,像后面的3只有一位数字,那么不够的部分将用空格补齐
下面的代码中给了一长串的*以显示补齐的空格,可以很明显看出他在前面补齐了三个空格凑成4位
#include<stdio.h> int main() { printf("****%4d******\n",3); printf("**************"); return 0; }
输出结果:
**** 3****** **************
-
精度控制 仅限浮点型
所谓精度控制其实就是控制小数位数,用%f或者%lf输出的浮点型默认输出6位小数,如果想要输出更多或者更少的小数位数,则可以使用精度控制
-
%.16f 打印的时候 打印16位小数
#include<stdio.h> int main() { double a = 1; float b = 1; printf("float:%.16f,double:%.16lf\n", a, b); return 0; }
打印结果:float:1.0000000000000000,double:1.0000000000000000
-
-
标记
-
左对齐(默认为右对齐)
#include<stdio.h> int main() { /*********默认右对齐*********/ printf("****%4d******\n", 3); printf("**************\n"); /*********左对齐*********/ printf("****%-4d******\n", 3); printf("**************\n"); return 0; }
输出:
**** 3****** ************** ****3 ****** **************
- 输出符号
-
空格 输出正数的时候在前面补一个空格
-
在用%o输出八进制的时候 在八进制前面补一个0
-
在用%x输出16进制的时候 在16进制前面补一个0x
-
-
-
其他不常格式占用符
%hd short %ld long %lld long long %x 16进制整型 %o 8进制整型 %u 无符号整型 %s 字符串 %p 地址