目录

前文列表

程序编译流程与 GCC 编译器

C 语言编程 — 基本语法

数据类型

数据类型,即数据对象的类型,是编程语言的基石。自编程语言发明以来,数据类型就已经存在,其最初的目的就是为了能够让程序更加充分的利用稀缺的内存空间。

在硬件行业严格遵守摩尔定律发展了多年后的今天,开发者得以享受充足内存资源,同时,数据类型也被赋予了更深厚的含义:

  • 确定数据对象占用的内存空间大小
  • 确定数据对象的数值范围
  • 规定数据对象所能进行的操作(行为)

例如:基本整型数据对象占用 4 Bytes(32 Bits) 的内存空间, 数值范围是 0x0~0xFFFF FFFF,可以进行求余运算。需要注意的是,类型数据对象所占用的内存空间和数值范围,除了取决于 C 语言本身的常规定义之外,还可能会受到编译器的影响。

C 语言的数据类型可能是内建的,也可能是我们自定义的。

C 语言 4 大数据类型:

基本数据类型

数据类型用于声明不同类型的常量、变量或函数。变量的数据类型决定了变量占用的存储空间,以及如何解释存储的位模式。

基本类型是算术类型,包括:整数类型和浮点类型。

无符号数据类型与有符号数据类型的区别:

  • 占用相同的内存空间,但表示数值范围不同
  • 有符号和无符号仅可用于修饰整型或字符型数据对象

例如:若 unsigned char 和 signed char 都占用 1Byte 的内存空间。signed char 的数值范围为 [-128, 127],而 unsigned char 的数据范围为 [0, 255]。这是因为有符号数据类型数据的最高位被用作为符号位,而无符号的数据类型数据最高位被用作为数据位。

整型

  • 默认为 10 进制
  • 以 0 开头为 8 进制:045,021
  • 以 0b 开头为 2 进制:0b11101101
  • 以 0x 开头为 16 进制:0x21458adf

注意,各种类型的存储大小与操作系统 CPU 的位数是有关系的。可以使用 sizeof 运算符来得到某个类型或某个变量在特定平台上的准确大小。

#include <stdio.h>

int main() {
printf("int: %lu \n", sizeof(int));
return 0;
}
  • stdio.h:输入输出标准库,声明了 printf 标准函数
  • %lu:为 32 位无符号整数。
  • sizeof:C 语言运算符,计算数据类型或变量长度(即:所占字节数)

运行:

$ gcc -Wall main.c -o main

$ ./main
int: 4

浮点型

下表列出了关于标准浮点类型的存储大小、值范围和精度的细节:

  • 单精度常量:2.3f
  • (默认)双精度常量:2.3
#include <stdio.h>
#include <float.h> int main(){
printf("float byte: %lu \n", sizeof(float));
printf("float MIN: %E \n", FLT_MIN);
printf("float MAX: %E \n", FLT_MAX);
printf("float DIG: %d \n", FLT_DIG); return 0;
}
  • float.h:定义了浮点数相关的宏,e.g. FLT_MIN、FLT_MAX 等。
  • %E:以指数形式输出单、双精度实数。

运行:

$ ./main
float byte: 4
float MIN: 1.175494E-38
float MAX: 3.402823E+38
float DIG: 6

C 语言编程 — 基本数据类型的更多相关文章

  1. R语言编程艺术# 数据类型向量(vector)

    R语言最基本的数据类型-向量(vector) 1.插入向量元素,同一向量中的所有的元素必须是相同的模式(数据类型),如整型.数值型(浮点数).字符型(字符串).逻辑型.复数型等.查看变量的类型可以用t ...

  2. C语言编程入门之--第四章C语言基本数据类型

      导读:C语言程序中经常涉及一些数学计算,所以要熟悉其基本的数据类型.数据类型学习起来比较枯燥,不过结合之前的内存概念,以及本节的字节概念,相信数据类型也就不难理解了.本章从二进制的基本概念开始,然 ...

  3. Go 语言的基本数据类型

    Go 语言的基本数据类型 0)变量声明 var 变量名字 类型 = 表达式 例: 其中“类型”或“= 表达式”两个部分可以省略其中的一个. 1)根据初始化表达式来推导类型信息 2)默认值初始化为0. ...

  4. 第二章 C语言编程实践

    上章回顾 宏定义特点和注意细节 条件编译特点和主要用处 文件包含的路径查询规则 C语言扩展宏定义的用法 第二章 第二章 C语言编程实践 C语言编程实践 预习检查 异或的运算符是什么 宏定义最主要的特点 ...

  5. 华为C语言编程规范

    DKBA华为技术有限公司内部技术规范DKBA 2826-2011.5C语言编程规范2011年5月9日发布 2011年5月9日实施华为技术有限公司Huawei Technologies Co., Ltd ...

  6. linux 操作系统下c语言编程入门

    2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理  ...

  7. 采访:Go语言编程

    Go语言是由Google在2009年11月份公布的,它的目标是要应对软件开发所面临的最新挑战.Go语言特别被设计为快速(包括在编译时).支持多核的语言,并且兼顾了动态语言的简单性和静态类型语言的安全性 ...

  8. MySQL的C语言编程(一)

    原文:MySQL的C语言编程(一) 初学MySQL,记录一下MySQL用c语言编程时遇到的问题. 这是我的源程序: int main(void) { MYSQL *mysql=NULL; if((my ...

  9. R语言编程艺术(2)R中的数据结构

    本文对应<R语言编程艺术>第2章:向量:第3章:矩阵和数组:第4章:列表:第5章:数据框:第6章:因子和表 ======================================== ...

  10. Go 语言编程

    [课程名称]Go 语言编程   [课程时间]2014年7月30日(周三) 20:50 - 22:00         [课程安排]20:50-21:00     通过邮件地址登录网络课堂       ...

随机推荐

  1. #dp#洛谷 3473 [POI2008] UCI-The Great Escape JZOJ 4019 Path

    题目 \(n*m\)的地图,计算从\((n,1)\)到第\(x\)列的第\(y\)行的路径条数\(\bmod k\) , 走过的点不能再走,转弯只能向右转.转弯完之后必须往前走一格 分析 可以发现,走 ...

  2. #带权并查集#HDU 3038 How Many Answers Are Wrong

    题目 有未知的\(n\)个数,有\(m\)组询问,形如区间和等于给定值, 问有多少条错误的询问,一旦错误忽略此条询问 \(n\leq 2*10^5,m\leq 4*10^4\) 分析 用带权并查集,记 ...

  3. Regex中Replace方法的简单实用

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. Android 开发入门(4)

    0x06 中级控件 (1)图形绘制 a. 图形 Drawable Drawable 类型包括图片.色块.画板.背景 drawable 目录一般保存描述性 XML 文件,具有具体分辨率的 drawabl ...

  5. MMdeploy TensorRT 模型实时监控桌面,PyQt5实现

    本项目遵从:GNU General Public License v3.0 个人博客『 gy77 』: GitHub仓库 :代码源码详见仓库 demo_qt.py 我的CSDN博客 我的博客园 简介: ...

  6. 力扣303(java)-区域和检索-数组不可变(简单)

    题目: 给定一个整数数组  nums,处理以下类型的多个查询: 计算索引 left 和 right (包含 left 和 right)之间的 nums 元素的 和 ,其中 left <= rig ...

  7. OceanBase初体验之从MySQL迁移数据到OceanBase集群

    前置条件 MySQL 环境 OceanBase 环境 测试用的表结构和一些数据 先在源端 MySQL 用如下脚本创建测试表,以及写入10000条数据用于迁移测试. use test; CREATE T ...

  8. 从零开始入门 K8s | 理解 CNI 和 CNI 插件

    作者 | 溪恒 阿里巴巴高级技术专家 本文整理自<CNCF x Alibaba 云原生技术公开课>第 26 讲,点击直达课程页面. 关注"阿里巴巴云原生"公众号,回复关 ...

  9. 对话 Dubbo 唤醒者北纬:3.0 将至,阿里核心电商业务也在用 Dubbo

    简介: 如今,Dubbo 已经毕业一年,越来越多开发者开始询问 Dubbo 3.0 到底有哪些变化,阿里巴巴内部到底用不用 Dubbo,这是不是一个 KPI 开源项目以及 Dubbo 和 Spring ...

  10. 小白也能懂的 Nacos 服务模型介绍

    简介: 理解了 Nacos 的服务模型,也有利于我们了解 Nacos 背后的工作原理,从而确保我们正确地使用 Nacos. 作者:岛风 前言 按照目前市场上的主流使用场景,Nacos 被分成了两块功能 ...