C语言-6.数据类型

news/2025/2/27 7:06:56

目录

  • 6.1数据类型
    • 6.1.1数据类型:C语言有哪些是基础数据类型,sizeof可以做什么
    • 6.1.2数据类型:除了int,还有多少整数类型
    • 6.1.3整数的内部表达式:整数是如何表达的,尤其是负数如何表达的
    • 6.1.4整数的范围:如何推断整数类型所能表达的范围,越界了会咋样
    • 6.1.5整数的格式化:如何格式化输入输出整数,如何处理8进制和16进制
    • 6.1.6选择整数类型:没有什么特殊需求只用int就好了
    • 6.1.7浮点类型:double 和float,它们是什么,如何输入输出
    • 6.1.8浮点的范围与精度:浮点数到底能表达哪些数
    • 6.1.9字符类型char是整数也是字符
    • 6.1.10逃逸字符:反斜杠开头的字符是特殊的控制字符
    • 6.1.11类型转换如何在不同类型之间做转换
  • 6.2其他运算:逻辑,条件,逗号
    • 6.2.1逻辑类型:表示关系运算和逻辑运算的结果的量
    • 6.2.2逻辑运算:对逻辑量进行与,或,非,运算
    • 6.2.3条件运算与逗号运算

6.1数据类型

6.1.1数据类型:C语言有哪些是基础数据类型,sizeof可以做什么

C有类型的语言
C语言的变量,必须:
在使用前定义,并且
确定类型
C以后的语言向两个方向发展:
C++/java更强调类型,对类型的检测更严格
javaScript,Python,PHP不看重类型,甚至不需要事先定义
类型安全
支持强类型的观点认为明确的类型有助于尽早发现程序中的简单错误
反对强类型的观点认为过于强调类型迫使程序员面对底层实现,而非事务逻辑
总的来说,早期语言强调类型,面向底层的语言强调类型
C语言需要类型,但是对类型的安全检查并不足够
C语言的类型
整数
char short int long longlong
浮点数
float double longdouble
逻辑
bool
指针
自定义类型
类型有何不同
类型名称:int long double
输入输出时的格式化:%d,%ld,%lf
所表达的数的范围:char<short<int<float<double
内存中所占据的大小:1个字节到16个字节
内存中的表达形式:二进制数(补码),编码
sizeof
是一个运算符,给出某个类型或变量在内存中所占据的字节数
sizeof(int)
sizeof(i)
是静态运算符,它的结果在编译时刻就决定了
不要在sizeof的括号里做运算,这些运算不会做的

6.1.2数据类型:除了int,还有多少整数类型

整数
char:1字节(8比特)
short:2字节
int:取决于编译器(CPU),通常的意义是“1个字”
long:取决于编译器(CPU),通常的意义是“1个字”
long long:8字节

6.1.3整数的内部表达式:整数是如何表达的,尤其是负数如何表达的

整数的内部表达
计算机内部一切都是二进制
18—>00010010
0—>00000000
-18—>?
如何表示负数
十进制用“-”来表示负数,在做计算的时候
加减是做相反的运算
乘除时当做正数,计算完毕后对结果的符号取反
二进制负数
1个字节可以表达的数
00000000----11111111(0-255)
三种方案:
1.仿照十进制,有一个特殊的标志表示负数
2.取中间的数为零,如100000000表示0,比它小的是负数,比它大的是正数
3.补码
补码
考虑负一,我们希望负一加一等于零。如何能做到?
0—>0000 0000
1—>0000 0001
11111111+00000001=100000000
因为0-1—>-1所以,-1=
(1)00000000-00000000—>11111111
11111111被当做纯二进制看待时,是255,被当做补码看待时是-1
同理,对于-a,其补码就是0-a,实际是2的n次方-a,n是这种类型的位数

6.1.4整数的范围:如何推断整数类型所能表达的范围,越界了会咋样

数的范围
对于一个字节(8位),可以表达的是:00000000-11111111
其中
00000000—>0
11111111~10000000—>-1 ~ -128
00000001~01111111—>127
整数的范围
char:1个字节 -128~127
short:2字节-32768~32767
int:取决于编译器,通常的意义是“1个字”
long 4个字节
long long 8个字节
unsigned
在整型类型加上unsigned使得它们无符号的整数
内部的二进制表达没变,变的是如何看待它们
如何输出
11111111
对于char,是负一
对于unsigned是255
如果一个字面量常数想


http://www.niftyadmin.cn/n/5869693.html

相关文章

flask 是如何分发请求的?

这篇博客会涉及一些 WSGI 的知识&#xff0c;不了解的可以看这篇博客&#xff0c;简单了解一下。 Python 的 WSGI 简单入门 一、请求在 flask 中的处理过程 我们先来看一下 werkzeug.routing 包下 Map 和 Rule 方法的使用&#xff0c;这里给出一个官方的示例&#xff08;我进…

构建逻辑思维链(CoT)为金融AI消除幻觉(保险理赔篇)

在上一篇文章中&#xff0c;我们介绍了如何利用亚马逊云科技的Amazon Bedrock GuardRails自动推理检查为金融行业的AI应用提升准确性&#xff0c;消除幻觉。在本案例中&#xff0c;我们将探讨一个利用AI副主保险公司评估长期护理保险理赔审核的场景。 自动推理检查配置 在本方…

Zama fhEVM应用:摩根大通旗下 Kinexys 发布概念验证

1. 引言 Zama 全同态加密 (FHE) 技术在摩根大通的 Kinexys&#xff08;以前称为 Onyx&#xff09;中成功进行了概念验证。该概念验证是“EPIC 项目&#xff1a;通过链上企业隐私、身份和可组合性推动代币化金融”的一部分&#xff0c;在 Kinexys 数字资产沙盒&#xff08;以前…

性能测试丨JMeter 分布式加压机制

JMeter 的分布式加压机制允许在多台机器上同时运行测试&#xff0c;以模拟更高的负载。以下是其工作原理和配置步骤&#xff1a; 1. 分布式架构 主节点&#xff08;Controller&#xff09;&#xff1a;负责管理测试计划、分发任务和收集结果。从节点&#xff08;Slave&#x…

排序(数据结构篇)

排序 朴素快排的缺陷&#xff1a; 1.基准元素选择不当&#xff0c;递归层数会增加&#xff0c;时间复杂度变高 2.当有大量重复元素时&#xff0c;递归层数也会增加 如果有一个表达式 (x y) >> 1 它的意思就是先将整数x和y相加&#xff0c;然后将结果右移一位。 这实际…

【面试】Java 之 String 系列 -- String 为什么不可变?

在 Java 编程中&#xff0c;String 类是一个使用频率极高的类。而 String 对象具有不可变的特性&#xff0c;这一特性在 Java 设计中有着重要的意义。本文将深入探讨 String 不可变的含义、原因以及带来的好处。 一、String 不可变的含义 1. 概念解释 所谓 String 不可变&am…

为什么办公电脑需要使用企业级杀毒软件?--火绒企业版V2.0

首先&#xff0c;办公电脑处在一个网络连接和数据传输频繁的环境中&#xff0c;员工经常会接收和发送电子邮件、浏览网页、下载文件等&#xff0c;因此存在着各种网络安全威胁的风险。 其次&#xff0c;企业办公电脑作为业务运营的关键枢纽&#xff0c;存储着大量商业机密、客…

【Java企业生态系统的演进】从单体J2EE到云原生微服务

Java企业生态系统的演进&#xff1a;从单体J2EE到云原生微服务 目录标题 Java企业生态系统的演进&#xff1a;从单体J2EE到云原生微服务摘要1. 引言2. 整体框架演进&#xff1a;从原始Java到Spring Cloud2.1 原始Java阶段&#xff08;1995-1999&#xff09;2.2 J2EE阶段&#x…