【C 基础】数据类型

10 阅读 作者:五月君 2020-04-27

数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。

四大数据类型

在 C 语言中数据类型可分为四大数据类型,分别如下所示:

  1. 算术类型:包含整数类型、浮点类型
  2. 枚举类型:被用来定义在程序中只能赋予其一定的离散整数值的变量。
  3. void 类型:类型说明符 void 表明没有可用的值。
  4. 派生类型:包括指针类型、数组类型、结构类型、共用体类型和函数类型。

算数类型

整数类型

整数类型是指不包含小数点的数据,生活场景中的电影票数量、人的年龄等。

下表列出了关于标准整数类型的存储大小和值范围的细节:

类型 存储大小 值范围
char 1 byte -128 到 127 或 0 到 255
unsigned char 1 byte 0 到 255
signed char 1 byte -128 到 127
int 2 或 4 bytes -32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647
unsigned int 2 或 4 bytes 0 到 65,535 或 0 到 4,294,967,295
short 2 bytes -32,768 到 32,767
unsigned short 2 bytes 0 到 65,535
long 4 bytes -2,147,483,648 到 2,147,483,647
unsigned long 4 bytes 0 到 4,294,967,295

浮点类型

浮点类型是带小数的数据类型,生活场景中商品金额、物体重量等都为浮点类型。

类型 存储大小 值范围 精度
float 4 byte 1.2E-38 到 3.4E+38 6 位小数
double 8 byte 2.3E-308 到 1.7E+308 15 位小数
long double 10 byte 3.4E-4932 到 1.1E+4932 19 位小数

实例

“村里有个姑娘叫小芳,年方十八,身高1米68,长得美丽又大方。”

#include <stdio.h>
int main(){
    char name = "xiaofang";
    int age = 18;
    float height = 1.68;
    
    printf("村里有个姑娘叫%c,年方%d,身高%f,长得美丽又大方。", name, age, height);
	return 0;
}

基本类型之间的数据转换

常量

常量:指程序运行期间不会改变的变量,分为直接常量符号常量

直接常量

#include <stdio.h>
int main()
{
    printf("PI %d", 3.1415926); // 无需声明的量
    return 0;  
}

符号常量

#include <stdio.h>
#define PI 3.1415926
int main()
{
    printf("PI %d", PI); // 使用之前先使用符号 #define 定义
    return 0;  
}

类型转换

自动转换

自动类型转换在编译阶段完成

#include <stdio.h>
int main()
{
    char c = 'C';
    int n =  c; 
    float f =  c; 
    double d =   c; 
    printf("%d %f %lf", n, f, d); // 67 67.000000 67.000000
    return 0;    
}

强制转换

需要手动定义进行强制转换,形式为:(数据类型) (表达式)

#include <stdio.h>
#define PI 3.1415926
int main()
{
    int intPI = (int)(PI);
    printf("intPI 的整数部分是%d\n", intPI); // intPI 的整数部分是3
    return 0;
}
点击查看更多内容
原文地址:https://www.imooc.com/article/300054
广告一下
热门教程
PHP7报A non well formed numeric value encountered 0
Linux系统下关闭mongodb的几种命令分享 0
mongodb删除数据、删除集合、删除数据库的命令 0
Git&Github极速入门与攻坚实战课程 0
python爬虫教程使用Django和scrapy实现 0
libnetsnmpmibs.so.31: cannot open shared object file 0
数据结构和算法视频教程 0
redis的hash结构怎么删除数据呢? 0
C++和LUA解析器的数据交互实战视频 0
mongodb errmsg" : "too many users are authenticated 0
C++基础入门视频教程 0
用30个小时精通C++视频教程可能吗? 0
C++分布式多线程游戏服务器开发视频教程socket tcp boost库 0
C++培训教程就业班教程 0
layui的util工具格式时间戳为字符串 0
C++实战教程之远程桌面远程控制实战 1
网络安全培训视频教程 0
LINUX_C++软件工程师视频教程高级项目实战 0
C++高级数据结构与算法视频教程 0
跨域问题很头疼?通过配置nginx轻松解决ajax跨域问题 0
相关文章
【译】JavaScript数据结构(3):单向链表与双向链表 16
10个JavaScript难点 16
【译】苹果拒绝支持PWA,有损Web的未来 16
iView 一周年了,同时发布了 2.0 正式版,但这只是开始... 16
nodejs+mongodb构建一个简单登录注册功能 16
【译】JavaScript数据结构(4):树 16
组件化开发与黑箱 16
TypeScript - 不止稳,而且快 16
webpack3+anujs+ReactCSSTransitionGroup 16
原生js实现图片放大镜效果 16
WEB缓存探究第二弹——实战 16
纯笔记:vfork 的一些使用场景(顺便讲一下 fork 的原理) 16
Android APP 内部捐赠实现(支付宝&amp;微信) 16
WKWebView 的一些小总结 16
模型评价(一) AUC大法 16
开始使用GraphQL 16
Webpack模块化原理简析 16
gulp使用问题记录 16
使用Angular4动画为页面添彩 16
Python27 Matplotlib (win64 python2.7) 安装及简单使用 16