【C语言】数据类型(基本类型、构造类型、类型转换)

news2025/2/23 18:08:03

⏰打卡:DAY1
🏆今日学习目标:数据类型(基本类型、构造类型、类型转换)
✨个人主页:颜颜yan_的个人主页
🎉专栏系列:从0开始学C语言


文章目录

  • 前言
  • 基本类型
    • 整型
    • 浮点型
    • 字符型
  • 构造类型
    • 数组
    • 枚举类型
    • 共用体
    • 结构体
  • 类型转换
    • 隐式类型转换
    • 显式类型转换
  • 总结


前言

最近C语言忘了好多,开始复习ing,记一下近日的笔记~


C语言中的数据类型分为4中,分别是基本类型、构造类型、指针类型、空类型。

在这里插入图片描述

这里查看一下每种数据类型的大小👇

在这里插入图片描述

基本类型

整型

不包含小数部分的数据都成为整型数据。在C语言中,根据数值的取值范围,可以将整型分为短整型(short int)、基本整型(int)、长整型(long int)。整型数据可以被修饰符signed和unsigned修饰,其中,被signed修饰的整型称为有符号的整型,被unsigned修饰的整型称为无符号的整型。
字节(Byte)是计算机存储空间的一种单位,它是内存分配空间的一个基础单位,即内存分配空间至少是1个字节。
最小的存储单位——位(bit),是一个二进制数字0或1占一位。
1B=8bit;

int类型在打印时使用%d

浮点型

浮点数分为单精度浮点数(float)和双精度浮点数(double)两种,其中double型变量所表示的浮点数比float型变量更精确。单精度浮点数后面以F或f结尾,双精度浮点数以D或d结尾
浮点数的后缀可以省略,若省略,则默认为双精度浮点数。

double类型打印时使用%lf,float类型打印时使用%f。

字符型

字符型变量用于存储一个单一字符,在C语言中用char表示,其中每个字符变量都会占用1个字节。在给字符型变量赋值时,需要用一对英文半角格式的单引号(‘’)把字符括起来。
比如,'A’的声明方式:== char ch = ‘A’;==

字符型打印时使用%c。

构造类型

数组

数组是一组具有相同数据类型的变量集合,这些变量称为数组的元素,数组的类型由数组中存储的元素的类型决定。定义数组时要制定数组类型、数组大小。

int arr[5]; //定义一个int类型的数组,大小为5
char str[10]; //定义一个char类型的数组,大小为10
float ff[10]; //定义一个float类型的数组,大小为10

枚举类型

枚举类型用于定义值可以被一一列举的变量。声明方式如下:

enum 枚举名 {标识符1 = 整型常量1,标识符2 = 整型常量2,…}

enum是声明枚举类型的关键字,枚举名表示枚举变量的名称。
注意:枚举值是常量,在程序中不能给其赋值。

共用体

共用体又叫联合体,它可以把不同数据类型的变量整合在一起。使用union关键字进行声明,定义格式如下:

 union 共用体类型名称
 { 
	数据类型 成员名1;
	数据类型 成员名2;
	 ...
	数据类型 成员名n;
}
//定义共用体数据类型为data
union data
{
	int i;
	char ch;
}

共用体中的所有成员共用一块内存,在引用共用体变量时,只有一个成员变量是有效的。

结构体

结构体与共用体类似,可以将不同数据类型的变量整合在一起,区别在于,结构体中的所有成员都占有内存,在引用接哦古提变量时,所有成员都有效。结构体使用关键字struct定义。

类型转换

隐式类型转换

隐式类型转换是指系统自动进行的类型转换。

  1. 不同类型的数据进行运算,系统会自动将低字节数据类型转换为高字节数据类型,即从下往上转换。
  2. 在赋值类型不同时,即变量的数据类型与所赋值的数据类型不同,系统会将“=”右边的值转换为变量的数据类型再将值赋值给变量。

显式类型转换

显式类型转换是使用强制类型转换运算符,将一个变量或表达式转化成所需的类型。
基本格式为:(类型名)(表达式)

  1. 浮点数与整型的转换:将浮点数转换成整数时,将舍弃浮点数的小数部分,只保留整数部分。将整型值赋给浮点型变量,数值不变,只将形式改为浮点形式,即小数点后带若干个0。
  2. 单、双精度浮点型的转换:float类型数据参与运算时需要在尾部加0扩充为double数据类型。double型数据转换为float型时,会造成数据精度丢失,有效位以外的数据将会进行四舍五入。
  3. char类型与int类型的转换:将int型数值赋值给char型变量,只保留其最低8位,高位部分舍弃;将char型数值赋值给int型变量时,如果原来char型数据取正值,则转换后仍为正值;如果原来char型数据可正可负,则转换后也仍然保持原值。
  4. int类型与long类型的转换:long型数据赋给int型变量时,将低16位值赋给int型变量,而将高16位截断舍弃(这里假定int型占2个字节)。将int型数据赋给long型变量时,其外部值保持不变,而内部形式有所改变。
  5. 无符号整数之间的转换:将一个unsigned型数据赋给一个长度相同的整型变量时,内部的存储方式不变,但外部值可能改变。将一个非unsigned整型数据赋给一个长度相同的unsigned型变量时,内部存储形式不变,但外部表示时总是无符号的。

总结

以上就是今天的学习内容啦~
如果有兴趣的话可以订阅专栏,持续更新呢~
咱们下期再见~
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/151991.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mybatis学习——增删改(mysql8.0)

目录 一、配置文件 (一)添加mybatis依赖: (二)resources资源目录的配置 1.database.properties文件的设置 2.mybatis-config.xml文件的设置 二、引入原始类 三、DogDao接口,定义增删改功能 (一)单条数据增删改 1.新增 2.删除 3.修改 (二)多条…

Makefile详细教程

Makefile详细教程 我编写本指南是因为我永远无法完全理解 Makefile。 他们似乎充斥着隐藏的规则和深奥的符号,提出简单的问题并没有得到简单的答案。 为了解决这个问题,我花了几个周末的时间坐下来阅读所有关于 Makefile 的内容。 我已将最关键的知识浓…

【链表】leetcode206.反转链表(C/C++/Java/Js)

leetcode206.反转链表1 题目2 思路2.1 双指针法(迭代)2.2 递归法2.2.1 递归--从前往后翻转指针指向2.2.2 递归--从后往前翻转指针指向3 代码3.1 C版本(迭代)3.2 C版本(迭代递归)3.3 Java版本(迭…

【OpenDDS开发指南V3.20】第十章:Java Bindings

介绍 OpenDDS提供JNI绑定。Java应用程序可以像C++应用程序一样使用完整的OpenDDS中间件。 有关入门的信息,包括先决条件和依赖项,请参阅$DDS_ROOT/java/INSTALL文件。 Java版本9和更高版本使用Java平台模块系统。要在这些Java版本中使用OpenDDS,请将MPC特性Java_pre_jpms…

QT Echarts 联动共享数据表图 使用详解

Echarts是百度的一款可视化界面开发的平台,里面的地图以及数据可视化内容十分丰富,适合用于一些大屏数据显示项目或者一些ui界面开发。每一个ECharts图表使用一个无边框的QWebView来展示,这样多个不同类型的ECharts图表就是多个封装不同类型E…

kettle 筛选数据 并根据关键字段去重 设计

文章目录前言kettle 筛选数据 并根据关键字段去重 设计实现:1、配置sqlite 数据库链接2、先从test表里抽取数据3、将表输入查询的数据插入到excel里4、将筛选出来的数据根据id去重5、插入本地excel6、ETL 整体效果:7、测试:前言 如果您觉得有用的话,记得给博主点个赞…

安全轻量化股票看盘盯盘软件需要实现的功能和基本要求是什么?

有很多投资者是上班族的,因此是不能无时无刻盯盘看盘的,那么为了解决这个问题就需要用上轻量化股票看盘盯盘软件,那么一个安全的轻量化股票看盘盯盘软件需要具备哪些功能和基本要求呢?接下来小编为大家分析分析! 1.一定…

小试跨平台局域网文件传输工具NitroShare,几点感想

随着电脑系统国产化的推进,单位用的OA系统已转移到国产电脑上了,但是国产电脑上的操作系统基于Linux,软件商店里可选的应用软件还不够多,功能也还有待提高。为了提高处理效率,经常需要把文件从国产电脑传到Windows平台…

信息收集过程WAF绕过详解

今天继续给大家介绍渗透测试相关知识,本文主要内容是信息收集过程WAF绕过详解。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对未…

浅析数据中心机架配电母线的应用及监控

摘要:本文先分析配电母线槽创新点和优势,然后结合湛江数据中心302机房母线槽建设对配电母线槽和列头柜两种供电方式进行经济效益对比,最后总结推广应用建议,以期为相关工程技术人员提供参考。 关键词:机架配电母线&a…

【动态路由和导航守卫】一.动态路由;二.路由中的查询参数;三.命名路由;四.命名视图;五.声明式导航 编程式导航;六.导航守卫

目录 一.动态路由 1.什么是动态路由? 2.动态路由如何进行参数的传递: (1)如何设置URL地址中的参数:/url/:参数名 (2)在组件中接收参数:this.$route.params.参数名 3.$route和$r…

最新版android-studio无法安装Lombok插件?魔改后可任意安装版本教程(附已魔改下载地址)

🤵‍♂️ 个人主页: 奇怪的守护神 👨‍💻 作者简介:十年全栈开发经验,团队负责人。喜欢钻研技术,争取成为编程达人 🎖️! 🗺️学海无涯苦作舟,🛤️…

【自学Python】Python字符串(string)

Python字符串(string) Python字符串(string)教程 字符串是一个不可改变的字节序列。字符串可以包含任意的数据,但是通常是用来包含可读的文本。 Python字符串(string) Python 字符串定义有五种形式,使用单引号、双引号、三个单引号 、三个双引号以及…

胡凡 《算法笔记》 上机实战训练指南 chap3 入门模拟: 3.2 查找元素

胡凡 《算法笔记》 上机实战训练指南 chap3 入门模拟: 3.2 查找元素 文章目录胡凡 《算法笔记》 上机实战训练指南 chap3 入门模拟: 3.2 查找元素【PAT B1041】考试座位号【PAT B1004】成绩排名【PAT B1028】人口普查解决过程(cpp)AC代码python实现AC代码pycode1pycode2未AC代码…

代码随想录算法训练营第7天 383.赎金信、454. 四数相加II、15.三数之和、18.四数之和

代码随想录算法训练营第7天 383.赎金信、454. 四数相加II、15.三数之和、18.四数之和 赎金信 力扣题目链接(opens new window) 给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构…

ERP系统到底能做什么?

ERP是什么?ERP即企业资源计划,ERP系统主要是优化企业内部的业务流程,用信息化管控的方式进行采购管理、库存管理、销售管理和财务管理等板块。它可以看作是进销存系统的进阶版,主要针对供应链中下游。 一、ERP系统怎么产生的&…

SpringBoot(项目创建使用+配置文件+日志文件)

目录 1. Spring Boot 项目创建 2. 写一个 Hello World 并运行 3. 配置文件的作用及格式 4. properties 配置文件的基本语法 5. 读取配置文件 6. yml 配置文件说明 7. properties 和 yml 的区别 8. SpringBoot 日志文件 8.1 日志的作用 8.2 自定义日志打印 8.3 日志…

低代码:全力构筑企业数字转型新生态

数字转型企业处于数字经济大潮的风口浪尖,既是创新主体也是数字技术广泛运用的重要平台,主动调整企业发展战略以顺应数字化转型是其明智抉择。企业经营决策者应深刻认识数字化转型的发展特点及本质要求,看到数字化转型是企业战略的迭代升级&a…

C#,图像二值化(19)——全局阈值的香巴拉算法( Shanbhag Thresholding)及源程序

1 算法描述(凑数)thresholdShanbhag由Robert Haase基于G.Landini和W.Rasband的工作。自动阈值器利用ImageJ中实现的Shanbhag阈值方法,使用GPU上确定的直方图创建尽可能类似于ImageJ“应用阈值”方法的二进制图像。thresholdShanbhag By Rober…

「精致店主理人」:青年敢有所为,梦想掷地有声

第三期「精致店主理人」青年创业孵化营于12月16日在周大福顺德匠心智造中心,完美收官!「精致店主理人」青年创业孵化营是在共青团深圳市委员会的指导下,由深圳市青少年发展基金会与周大福珠宝集团联合主办,郑家纯青年发展专项基金…