前提说明


格式说明:以[signed] int 为例
表明该类型的完整表达是 signed int
只不过signed可以省略
所以 int 也代表 signed int 类型

signed和unsigned说明

  • signed 代表有符号,最高位将被看做为符号位。

    1. 符号位为1时,代表这个数是负数(-n);
      2. 符号位为0时,代表这个数是正数(+n)。
  • unsigned 代表无符号,所有位都被看成是数据位。

    1. 只能代表正数(+n)。
  • 以八位二进制数 1000 0001 为例

    1. 如果是unsigned,则该二进制数表示 129
    2. 如果是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;

总结

  • 可将限定词分为两种:

    1. 有无符号限定词:signed和unsigned。

      • 如果不指定,则默认是signed 。
    2. 内存长度限定词:short、long、long long。
      • int 代表整型,如果有限定词修饰,一般可以省略。除非省无可省。
      • 内存长度限定词从short--->long 表示存数据用的内存越来越大,能存的数据范围也越来越大。
        • 可能long 和 int 占的内存一样大。

浮点型

  • 简单来说你要存放小数就用浮点型。包含以下两种。

单精度浮点型

类型格式float

定义变量float var;

双精度浮点型

类型格式double

定义变量double var;

长双精度浮点型

类型格式long double

定义变量long double var;

总结

  • floatdoublelong 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类型的变量

总结

  • 枚举常量是一个常量,甚至可以用来指定数组的长度。
  • 枚举常量的值
    1. 如果某个枚举常量给了初始值,那么该常量的值就是这个初始值。
    2. 如果第一个枚举常量没给初始值,则它的值为0。
    3. 如果非第一个枚举常量没给初始值,则它的值为 从前面最近的确定了值的枚举常量+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语言类型(上)的更多相关文章

  1. 修改github上的项目语言类型

    当在github上上传一个项目时,可能会出现一个问题就是项目代码类型是自动生成的,可能与我们实际项目代码种类不匹配,此时就需要修改项目语言类型了. 由于无法直接更改,所以用到此方法: 在你的项目根目录 ...

  2. Github:修改Github仓库中项目语言类型

    前述 有的时候我们把项目上传到github仓库上时语言会显示错误语言 比如一个java项目可能因为有js文件的存在而被识别为js项目 这种时候我们就要手动去修改Github的项目语言类型 解决办法 在 ...

  3. php中弱语言类型的底层实现

    PHP是弱语言类型,主要分为三类: 1.标量类型:integer.string.float.boolean 2.复合类型:array.object 3.特殊类型:resource.null php是通 ...

  4. c语言类型修饰符及内存

    今天来学习一下c语言类型修饰符及内存分布 1.auto int a; 默认在内存 2.register int a; 限制变量定义在寄存器上的修饰符 编译器会尽量安排CPU的寄存器去存放这个a,如果寄 ...

  5. JavaScript规定了几种语言类型?

    JavaScript中的每一个值都有它自己的类型,JavaScript规定了七种语言类型: 1.Undefined 2.Null 3.Boolean 4.String 5.Number 6.Symbo ...

  6. HMS Core 机器学习服务6.4.0版本更新啦,文本翻译功能增加10种小语种语言类型!

    近日,HMS Core机器学习服务(ML Kit)文本翻译功能在6.4.0版本更新中增加了10种小语种语言类型,分别是马其他语.马其顿.冰岛.乌尔都语.波斯尼亚语.乌克兰语.加泰罗尼亚语.斯洛文尼亚语 ...

  7. 《Entity Framework 6 Recipes》中文翻译系列 (25) ------ 第五章 加载实体和导航属性之加载完整的对象图和派生类型上的导航属性

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-5  加载完整的对象图 问题 你有一个包含许多关联实体的模型,你想在一次查询中, ...

  8. 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 ...

  9. C语言 HTTP上传文件-利用libcurl库上传文件

    原文  http://justwinit.cn/post/7626/ 通常情况下,一般很少使用C语言来直接上传文件,但是遇到使用C语言编程实现文件上传时,该怎么做呢? 借助开源的libcurl库,我们 ...

随机推荐

  1. java 知识点梳理

    1.ArrayList与linkedList 区别 ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦; 优点是查找比较快. Lin ...

  2. 4月27日 python学习总结 GIL、进程池、线程池、同步、异步、阻塞、非阻塞

    一.GIL:全局解释器锁 1 .GIL:全局解释器锁 GIL本质就是一把互斥锁,是夹在解释器身上的, 同一个进程内的所有线程都需要先抢到GIL锁,才能执行解释器代码 2.GIL的优缺点: 优点:  保 ...

  3. redis实战课题

    redis实战课题 本课题主要围绕用户登录时,直接到redis中查找用户的登录信息,密码验证.重置密码.查询所有用户.显示登录次数最多的前3位,最后通过(C# SQL)持久化到SQL Server 数 ...

  4. js正则表达式处理表单

    1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...

  5. Spring Boot 多模块项目创建与配置 (转)

    转载:https://www.cnblogs.com/MaxElephant/p/8205234.html 最近在负责的是一个比较复杂项目,模块很多,代码中的二级模块就有9个,部分二级模块下面还分了多 ...

  6. 【Java】这 35 个 Java 代码优化细节!

    前言 代码 优化 ,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没 ...

  7. 为什么需要消息系统,mysql 不能满足需求吗?

    1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据 丢失风险.许多消息队列所采用的& ...

  8. Netty学习摘记 —— 简单WEB聊天室开发

    本文参考 本篇文章是对<Netty In Action>一书第十二章"WebSocket"的学习摘记,主要内容为开发一个基于广播的WEB聊天室 聊天室工作过程 请求的 ...

  9. 10.Flink实时项目之订单维度表关联

    1. 维度查询 在上一篇中,我们已经把订单和订单明细表join完,本文将关联订单的其他维度数据,维度关联实际上就是在流中查询存储在 hbase 中的数据表.但是即使通过主键的方式查询,hbase 速度 ...

  10. 设置python 虚拟环境 virtualenv django 虚拟环境

    https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/development_environment Ubuntu vir ...