C语言类型(上)
前提说明
格式说明:以[signed] int 为例
表明该类型的完整表达是 signed int
只不过signed可以省略
所以 int 也代表 signed int 类型
signed和unsigned说明:
signed代表有符号,最高位将被看做为符号位。- 符号位为1时,代表这个数是负数(-n);
2. 符号位为0时,代表这个数是正数(+n)。
- 符号位为1时,代表这个数是负数(-n);
unsigned代表无符号,所有位都被看成是数据位。- 只能代表正数(+n)。
以八位二进制数
1000 0001为例- 如果是
unsigned,则该二进制数表示129。 - 如果是
signed,则该二进制数表示-1。
- 如果是
(仅作说明,不考虑具体类型大小,类型转换,数据的裁切或补充)
类型占据的内存的大小查询:
- 使用
sizeof(类型格式)就能查询到该类型占据的内存的大小,单位是字节。 - 一个字节包含8个
bit位。
定义变量说明
- 仅作展示变量(全篇都用var代表)应该在的位置。
- 在实际使用时,记得要初始化变量。
整型
- 简要说就是存放整数的类型。包含下面几种。
有符号短整型
类型格式:[signed] short [int]
定义变量:short var;
无符号短整型
类型格式:unsigned short [int]
定义变量:unsigned short var;
有符号基本整型
类型格式:[signed] int
定义变量:int var;
无符号基本整型
类型格式:unsigned [int]
定义变量:unsigned var;
有符号长整型
类型格式:[signed] long [int]
定义变量:long var;
无符号长整型
类型格式:unsigned long [int]
定义变量:unsigned long var;
有符号长长整型
类型格式:[signed] long long [int]
定义变量:long long var;
无符号长长整型
类型格式 :unsigned long long [int]
定义变量:unsigned long long var;
总结
- 可将限定词分为两种:
- 有无符号限定词:signed和unsigned。
- 如果不指定,则默认是signed 。
- 内存长度限定词:short、long、long long。
- int 代表整型,如果有限定词修饰,一般可以省略。除非省无可省。
- 内存长度限定词从short--->long 表示存数据用的内存越来越大,能存的数据范围也越来越大。
- 可能long 和 int 占的内存一样大。
- 有无符号限定词:signed和unsigned。
浮点型
- 简单来说你要存放小数就用浮点型。包含以下两种。
单精度浮点型
类型格式:float
定义变量:float var;
双精度浮点型
类型格式:double
定义变量:double var;
长双精度浮点型
类型格式: long double
定义变量: long double var;
总结
float、double、long double, 能存放的数据范围越来越大。- 如果有兴趣,可以自行查询浮点数表示规则。
字符型
有符号字符型
类型格式:[signed] char
无符号字符型
类型格式:unsigned char
总结
- 字符型变量存放的是该字符在ASCII表中对应的码值。
- 如果有兴趣,可以查询如果用数字赋值,超出范围后怎么处理。
- 中文字符应存放在字符串中,还会存在编码问题。
- ''单引号里面放一个字符,表示一个字符。
- ""双引号里面放任意个字符,表示一个字符串。
- 结合转义符还能组合出一些有特殊功能的字符。
- 比如'\n',表示回车换行。
复数
- 有需要可以自行查询,这里不作介绍。
枚举类型
类型格式:
enum 枚举名
{
枚举常量1[ = 初始值1],
枚举常量2[ = 初始值2],
...
枚举常量n[ = 初始值n]
};
定义变量:
enum Color
{
RED,
YELLOW = 2,
BLUE,
GREEN
};//定义enum的格式
enum Color var;//定义该enum类型的变量
总结
- 枚举常量是一个常量,甚至可以用来指定数组的长度。
- 枚举常量的值
- 如果某个枚举常量给了初始值,那么该常量的值就是这个初始值。
- 如果第一个枚举常量没给初始值,则它的值为0。
- 如果非第一个枚举常量没给初始值,则它的值为 从前面最近的确定了值的枚举常量+1顺延下来。
- 例子中的RED的值为0,YELLOW的值为2,BLUE的值为3,GREEN的值为4。
联合体
类型格式:
union 联合体名
{
类型1 成员1;
类型2 成员2;
...
类型n 成员n;
};
定义变量:
union Price
{
int i_price;
float f_price;
};
union Price var;
总结:
- 联合体成员都共用一个首地址,如果存值和取值的成员不一样,而它们的类型也不同,那么几乎不能得到你想要的数据。
- 可以通过 联合体变量.成员名 来访问(读取或写入)成员,即以该成员类型的方式访问联合体中的数据。
空类型
类型格式:void
使用: void func(void)
总结:
- 空类型一般都是和函数一起出现的。
- 当函数不需要返回值时,则将函数的返回值给定为void。
- 当函数不需要参数时,形参列表空着,此时函数调用的时候给不给实参都不会报错。
- 当函数不需要参数时,可以将形参列表给定为void,则此时函数调用的时候,如果给了实参,则会报错。
C语言类型(上)主要简单列出了基础的数据类型的类型格式以及如何定义一个该类型的变量,那么在C语言类型(下)来看一看剩下的最常用最核心的数组、结构体和指针这三种数据类型。
C语言类型(上)的更多相关文章
- 修改github上的项目语言类型
当在github上上传一个项目时,可能会出现一个问题就是项目代码类型是自动生成的,可能与我们实际项目代码种类不匹配,此时就需要修改项目语言类型了. 由于无法直接更改,所以用到此方法: 在你的项目根目录 ...
- Github:修改Github仓库中项目语言类型
前述 有的时候我们把项目上传到github仓库上时语言会显示错误语言 比如一个java项目可能因为有js文件的存在而被识别为js项目 这种时候我们就要手动去修改Github的项目语言类型 解决办法 在 ...
- php中弱语言类型的底层实现
PHP是弱语言类型,主要分为三类: 1.标量类型:integer.string.float.boolean 2.复合类型:array.object 3.特殊类型:resource.null php是通 ...
- c语言类型修饰符及内存
今天来学习一下c语言类型修饰符及内存分布 1.auto int a; 默认在内存 2.register int a; 限制变量定义在寄存器上的修饰符 编译器会尽量安排CPU的寄存器去存放这个a,如果寄 ...
- JavaScript规定了几种语言类型?
JavaScript中的每一个值都有它自己的类型,JavaScript规定了七种语言类型: 1.Undefined 2.Null 3.Boolean 4.String 5.Number 6.Symbo ...
- HMS Core 机器学习服务6.4.0版本更新啦,文本翻译功能增加10种小语种语言类型!
近日,HMS Core机器学习服务(ML Kit)文本翻译功能在6.4.0版本更新中增加了10种小语种语言类型,分别是马其他语.马其顿.冰岛.乌尔都语.波斯尼亚语.乌克兰语.加泰罗尼亚语.斯洛文尼亚语 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (25) ------ 第五章 加载实体和导航属性之加载完整的对象图和派生类型上的导航属性
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-5 加载完整的对象图 问题 你有一个包含许多关联实体的模型,你想在一次查询中, ...
- 2016年11月3日JS脚本简介数据类型: 1.整型:int 2.小数类型: float(单精度) double(双精度) decimal () 3.字符类型: chr 4.字符串类型:sting 5.日期时间:datetime 6.布尔型数据:bool 7.对象类型:object 8.二进制:binary 语言类型: 1.强类型语言:c++ c c# java 2.弱类型语
数据类型: 1.整型:int 2.小数类型: float(单精度) double(双精度) decimal () 3.字符类型: chr 4.字符串类型:sting 5.日期时间:datetime 6 ...
- C语言 HTTP上传文件-利用libcurl库上传文件
原文 http://justwinit.cn/post/7626/ 通常情况下,一般很少使用C语言来直接上传文件,但是遇到使用C语言编程实现文件上传时,该怎么做呢? 借助开源的libcurl库,我们 ...
随机推荐
- LGP3953题解
(口胡) 去年刚学 A_star 的时候以为是板子,上午推了一会儿之后受教了 遇到最短路的题先建最短路 DAG,虽然有0边但是先跑一个 Dijkstra. 然后设 \(d[u]\) 是从 \(1\) ...
- 七天接手react项目 —— 生命周期&受控和非受控组件&Dom 元素&Diffing 算法
生命周期&受控和非受控组件&Dom 元素&Diffing 算法 生命周期 首先回忆一下 vue 中的生命周期: vue 对外提供了生命周期的钩子函数,允许我们在 vue 的各个 ...
- 通过blacklist来禁用驱动
blacklist黑名单 我们在linux中安装驱动,有时会遇到受限或冲突,通常解决方式都是要修改blacklist.conf.对内核模块来说,黑名单是指禁止某个模块装入的机制 在 /etc/modp ...
- bzoj4241/AT1219 历史研究(回滚莫队)
bzoj4241/AT1219 历史研究(回滚莫队) bzoj它爆炸了. luogu 题解时间 我怎么又在做水题. 就是区间带乘数权众数. 经典回滚莫队,一般对于延长区间简单而缩短区间难的莫队题可以考 ...
- Apache+tomcat实现应用服务器集群
Ngnix/Apache比较 Nginx:Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行.其特点是占有内存少,并发能力 ...
- Mybatis的xml配置(mybatis-config.xml)精简笔记
老规矩,看着官方文档学 首先,我们需要知道的是,在MyBatis 的xml配置文件中,这些影响 MyBatis 行为的属性之间的设置是有先后顺序的.配置的先后顺序依照properties, setti ...
- Java 枚举和单例模式?
编写 Java 程序时, 如何在 Java 中创建死锁并修复它?经典但核心Java面试问题之一.如果你没有参与过多线程并发 Java 应用程序的编码,你可能会失败.如何避免 Java 线程死锁?如何避 ...
- SpringDataJdbc命名查询
当使用SpringDataJdbc命名查询时,需要配置几处:官方文档:https://docs.spring.io/spring-data/jdbc/docs/2.0.4.RELEASE/refere ...
- 在java web工程中实现登入和安全验证
登入页面的话我们之前做过直接可以拿来用翻一翻之前的博客就可以找到 在这个基础上添加验证功能 代码如下: 1 package security; 2 /** 3 * @author 鐜嬭儨鍗? 4 */ ...
- 区分构造函数注入和 setter 注入?
构造函数注入 setter 注入 没有部分注入 有部分注入 不会覆盖 setter 属性 会覆盖 setter 属性 任意修改都会创建一个新实例 任意修改不会创建一个新实例 适用于设置很多属性 适用于 ...