[C语言]数据类型 基础知识
数据类型
1.基本数据类型
编译器要处理数据 那么就需要知道数据的存储大小和存储方式(即数据类型)
常用的四种基本数据类型 char int float double
整型 int
存放整数的类型 占4个字节 范围-2^31~2^31-1
int (integer) 整数
存放0,1,2,3,4这种整数(不能带小数)
int 存放整数(可正可负) 4个字节
short (int) 2个字节
long (int) 4个字节
long long (int) 8个字节
浮点型 float/double
float 单精度浮点型 4个字节 精确到小数点后面6~7位 存放数据范围 -3.410^(-38)~3.410^(38)
double 双精度浮点型 8个字节 可以精确到小数点后面16~17位 -1.710^(-308)~1.710^(308)
字符类型 char
存放字符类型 大小一个字节,字符要用 单引号括起来 和数字区分
本质上是整数类型 可以存放-128~127范围内的整数 ,0~127范围的整数 每个整数都用来对应一个字符,这个整数就称之为这个字符的ASCII码(对应关系可以参考ASCII码表)
使用的时候 使用字符和使用他的ASCII都可以
实质上char -128~127
基本数据类型总结
数据的存储大小
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 |
float和double的区别
double存放范围大 精度高 float占用内存小 运算速度快
精度要求高或者存放数据大用double 不然用float
2. 命名方式
命名规定
必须由字母数字 下划线 美元符号组成
不可以是数字开头
有些标识符被系统使用了,因此在定义标识符的时候不能和系统的标识符(关键字)重复
了解C语言32个关键字
常用的命名规则
-----驼峰命名法
特点 多个单词组合 除第一个单词外每个单词的首字母大写(也称小驼峰)
示例 iPadMini mciSendSrting-----帕斯卡命名法
特点:每一个单词的首字母大写 其余小写(也称大驼峰)
示例: FirstName OuGuang-----匈牙利命名法
开头字母用变量类型的缩写 其余部分用变量的英文或者英文缩写,单词首字母大写
示例 iMyAge cMyName fManHeight全大写 常量
#define PI 3.1415926
_t 一般是别名
size_t
time_t
3.定义变量
定义变量的格式是 类型 变量名
类型比如上面说过的int double, 变量名可以自取
int a;//定义一个整型变量a
定义变量的时候可以用给他赋值 (初始化)
/****初始化****/
char ch=‘A’;//字符要加单引号’ ‘
/****赋值****/
char ch;
ch=65;//字符类型可以直接使用ASCII码(这个是数字 不要加单引号)
4.输入输出
输入或者输出变量
scanf 获取用户输入的数据 将数据存放在变量中 scanf("格式占位符",&变量)
printf 输出字符串或格式输出数据 printf("字符串"); printf("格式占位符1,格式占位符2",变量1,变量2);
#include<stdio.h>
int main()
{
/********整型*********/
int y;//准备变量
printf("请输入一个整型");
scanf("%d", &y);// 注意 scanf 要取地址 &
printf("用户输入的内容是%d\n", y);
/********字符型********/
char ch;
printf("请输入一个字符");
scanf("%c", &ch);
printf("用户输入的内容是%c\n", ch);
/********单精度浮点型*********/
float a;
printf("请输入一个float型");
scanf("%f", &a);
printf("用户输入的内容是%f\n", a);
/********双精度浮点型*********/
int b;
printf("请输入一个double型");
scanf("%lf", &b);
printf("用户输入的内容是%lf\n", y);
return 0;
}
格式占位符说明
%d | 输入或者输出一个int |
---|---|
%c | 输入或者输出一个char |
%f | 输入或者输出float |
%lf | 输入或者输出一个double |
对于%f %lf 在输出的时候是一样的 默认打印6位小数
#include<stdio.h>
int main()
{
double a = 1;
float b = 1;
printf("float:%lf,double:%f\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:%.16lf,double:%.16f\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 地址
(注:文章转载于网络文章+个人补充)