【C语言基础】基本数据类型和常量介绍

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!
博主链接

博客内容主要围绕:
       5G/6G协议讲解
       高级C语言讲解
       Rust语言讲解



文章目录

  • 基本数据类型和常量介绍
    • 一、整数类型 int
    • 二、浮点数值类型 float
    • 三、扩展精度类型 double
    • 四、单字符类型 char
    • 五、布尔数据类型 _Bool
    • 六、类型说明符 long、long long、short、unsigned和signed
    • 七、类型测试示例

基本数据类型和常量介绍

       之前博客已经介绍过C语言的基本数据类型int,声明为int类型的变量只能用于存储整型值,即没有小数点的值。C编程语言还提供了另外4种基本数据类型:floatdoublechar_Bool。声明为float类型的变量可用于存储浮点数(包含小数位的值)。double类型与float类型相同,只是精度大约是float的两倍。char类型可以用来存储单个字符,比如字母‘a’、数字‘6’或分号(‘;’)。最后,_Bool数据类型仅可用于存储值0或1。这种类型的变量用于表示开/关、是/否或真/假的情况。这种非此即彼的选择也称为二元选择。

       在C语言中,任何数字、单个字符或字符串都被称为常量(constant)。例如,数字58表示一个常量整数值。字符串“Programming in C is fun.\n”是常量字符串的一个例子。完全由常量值组成的表达式称为常量表达式(constant expression)。下面的表达式就是一个常量表达式,因为表达式中的每一项都是一个常数值:

128 + 7 - 17

另外,如果下面的表达式中,变量i被声明为一个整数变量,则这个表达式就不是常量表达式了。因为它的值会根据i的取值而变化。如果i为10,表达式的值等于125,而如果i的值是200,则表达式的值就变成了-65。

128 + 7 – i 
类型常量举例printf字符
char‘a’,’\n’%c
_Bool0,1%i,%u
short int%hi,%hx,%ho
unsigned short int%hu,%hx,%ho
int12,-97,0xFFE0,0177%i,%x,%o
unsigned int12u,100U,0XFFu%u,%x,%o
long int12L,-2001,0xffffL%li,%lx,%lo
unsigned long int12UL,100ul,0xffeeUL%lu,%lx,%lo
long long int0xe5e5e5e5LL,500ll%lli,%llx,%llo
unsigned long long int12ull,0xffeeULL%llu,%llx,%llo
float12.34f,3.1e-5f,0x1.5p10,0x1P-1%f,%e,%g,%a
double12.34,3.1e-5,0x.1p3%f,%e,%g,%a
long double12.34l,3.1e-5l%Lf,%Le,%Lg

一、整数类型 int

       在C语言中,整数常数是由一个或多个数字组成的序列。序列前面的减号表示值是负数。158、−10和0都是有效的整数常量。数字之间不能有空格,大于999的值不能用逗号表示。(因此,12,000不是一个有效的整数常量,必须写成12000)

       C语言中的两种特殊格式允许整数常量以非十进制(以10为基数)格式表示。如果整数的第一位是0,则表示使用八进制(octal)数表示,即以8为基数。在这种情况下,值的剩余数字必须是有效的八进制数字,因此必须是0 ~ 7。因此,要在C语言中表示八进制数50,即十进制的40,就使用表示法050。类似地,八进制常量0177表示十进制值127 (1 × 64 + 7 × 8 + 7)。通过在printf()语句的格式字符串中使用格式字符%o,可以在终端以八进制表示法显示整数值。在这种情况下,该数值显示为不带前导零的八进制形式。使用格式字符%#o会在八进制值之前显示前导零。

       如果整数常量前面有一个0和字母x(大写或小写),则该值被认为是以十六进制(以16为基数)表示的。紧跟在字母x之后的是十六进制值的数字,可以由数字0~9和字母a~f(或A~F)组成。这些字母分别表示值10~15。因此可以使用下面的语句将十六进制值FFEF0D赋值给一个名为rgbColor的整数变量。

rgbColor = 0xFFEF0D; 

此外,可以使用格式字符%x显示一个不带前导0x的十六进制值,并且使用小写字母a~f表示十六进制数字。如果要显示以0x开头的值,可以使用格式字符%#x,如下所示。

printf ("Color is %#x\n", rgbColor); 

要用大写字母显示前导x和随后的十六进制数位,可以使用一个大写的x,如%X%#X

二、浮点数值类型 float

       一个声明为float类型的变量可用于存储包含小数位的值。通过是否有小数点来区分浮点数常数。你可以省略小数点前的数字或小数点后的数字,但显然不能省略两者。数值3.、125.8、-.0001都是有效的浮点常量。要在终端显示浮点数,需要使用printf()转换字符%f

       浮点常量也可以用科学记数法(scientific notation)表示。数值1.7e4就是用这种表示法表示的浮点数,表示1.7×。字母e前面的值称为尾数(mantissa),后面的值称为指数(exponent)。指数表示10的幂,且该指数前面可以有一个可选的加号或减号,尾数将与这个幂值相乘。因此,在常数2.25e−3中,2.25是尾数的值,−3是指数的值。该常数表示值2.25×,即0.00225。顺便说一下,用于将尾数和指数分开的字母e,既可以用小写也可以用大写。

       要用科学记数法显示值,应该在printf()格式字符串中指定格式字符%e。printf()格式字符%g可用于让printf()决定以普通浮点记数法还是科学记数法显示浮点值。这个判断基于指数的值:如果指数小于-4或大于5,则使用%e(科学记数法)格式;否则,使用%f格式。

       使用%g格式字符显示浮点数,它可以生成最美观的输出。一个十六进制(hexadecimal)浮点常数包含一个前导0x或0X,随后是一个或多个十进制或十六进制数字,然后是一个p或P,最后是一个可选的有符号的二进制指数。例如,0x0.3p10表示值3/16×= 192.0。

三、扩展精度类型 double

       double类型与float类型非常相似,但当float变量提供的范围不够时,可以使用它。声明为double类型的变量所能存储的有效位数大约是float类型变量的两倍。大多数计算机使用64位来表示双精度值。

       除非另有说明,否则所有浮点常量都被C语言编译器视为double值。若要显式表示一个float常数,可以在数字后面追加f或F,如下所示:

12.5f

       要显示double值,可以使用格式字符%f、%e或%g,它们与用于显示float值的格式字符相同。

四、单字符类型 char

       一个char变量可用于存储单个字符。一个字符常量用一对单引号括起来。所以’a’、’;’和’0’都是有效的字符常量例子。第一个常量表示字母a,第二个是分号,第三个是字符0,它与数字0不同。不要将字符常量(用单引号括起来的单个字符)和字符串(用双引号括起来的任意数量的字符)混淆。

       字符常量’\n’(换行符)是一个有效的字符常量,尽管它似乎与前面提及的规则相矛盾。这是因为反斜杠字符在C语言系统中是一个特殊字符,实际上并不算字符。换句话说,C语言编译器将字符’\n’视为单个字符,尽管它实际上是由两个字符组成的。还有其它以反斜杠字符开头的特殊字符。

       在终端上显示char变量的值,可以在printf()调用中使用格式字符%c

五、布尔数据类型 _Bool

       _Bool变量在语言中定义得足够大以存储值0和1。但对它使用的精确内存数量未做明确规定。_Bool变量用于需要表示布尔条件的程序中。例如,可以使用这种类型的变量表示是否已经从文件中读取了所有数据。

       按照惯例,0用来表示假值,1表示真值。当给_Bool变量赋值时,0的值在变量内部被存储为0,而任何非0的值都被存储为1。

       为了能够在程序中更容易地使用_Bool变量,在标准头文件<stdbool.h>中定义了值bool、true和false。

六、类型说明符 long、long long、short、unsigned和signed

       如果将long说明符直接放在int声明的前面,则声明的整型变量将在某些计算机系统上具有扩展的范围。下面是一个long int声明的例子:

long int factorial; 

       上面的语句将变量factorial声明为一个long整型变量。与float和double一样,long变量的精度取决于特定的计算机系统。在许多系统上,int和long int的取值范围相同,二者都可用于存储32位宽的整数值(即2147483647以内的整数值)。

       可以通过在整型常量的末尾追加字母L(大写或小写),可以构成一个long int类型的常量值。数字和L之间不允许有空格。因此,下面的语句将numberOfPoints声明为一个long int类型,并为其赋初值131071100。

long int numberOfPoints = 131071100L; 

       要使用printf()显示long int的值,可以在整数格式字符i、o和x之前添加字母 l 作为修饰符。这意味着格式字符%li可以显示十进制格式的long int值,字符%lo可以显示八进制格式的值,字符%lx可以显示十六进制格式的值。

       此外,还有一种long long整型数据类型:

long long int maxAllowedStorage; 

上面的语句将所示变量声明为指定的扩展精度,保证至少64位宽。为了显示long long整数,需要在printf字符串中使用了两个l,而不是单个字母l,如”%lli"。
long说明符也允许出现在double声明前,如下所示:

long double US_deficit_2004; 

通过在long double常量后面添加字母l或L被写成一个浮点常量,例如

1.234e+7L

       要显示一个long double值,可以使用L修饰符。因此,%Lf在浮点表示法中显示long double值,%Le在科学表示法中显示相同的值,而%Lg告诉printf()在%Lf和%Le之间进行选择。
说明符short放在int声明的前面时,告诉C语言编译器正在声明的特定变量用于存储相当小的整数值。使用short变量主要是为了节省内存空间,在程序需要大量内存且可用内存数量有限的情况下,这可能会成为一个问题。

       在某些机器上,一个short int变量所占的存储空间只有常规int变量的一半。在任何情况下,都可以保证为short int类型分配的内存空间量不少于16位

       在C语言中,无法明确地编写一个short int类型的常量。要显示short int变量,需要将字母h放在任何普通整数转换字符之前:%hi%ho%hx。或者,你也可以使用任何整数转换字符来显示short int,这是因为在将它们作为参数传递给printf()函数时,它们可以被转换为整数。

       当一个整数变量仅用于存储正数时,可以将unsigned说明符放在int变量前面。如下面的代码所示。下面的代码向编译器声明counter变量仅用于存储正数值。通过将整数变量的使用限制为仅存储正整数,可以扩展整数变量的精度。

unsigned int counter; 

通过在常量后面添加u(或者U)可以构成一个unsigned int常量,如下所示:

	0x00ffU

       在写整型常量时,你可以把字母u(或U)和l(或L)组合起来,如下面代码所示。目的是告诉编译器将常量20000视为unsigned long变量。

20000UL

       如果一个整型常量后面没有任何字母u、U、l或L,而且它太大而无法存入普通大小的int中,编译器会将其视为unsigned int。如果它太大,无法放入unsigned int,编译器会将其视为long int。如果它仍然无法装入long int,编译器会将其转换为unsigned long int。如果还不适合,编译器将其视为long long int类型,否则视为unsigned long long int类型。

       可以使用signed限定符明确地告诉编译器某个特定变量是有符号量。

七、类型测试示例

#include <stdio.h> 

int main (void) 
{ 
	int integerVar = 100; 
	float floatingVar = 331.79; 
	double doubleVar = 8.44e+11; 
	char charVar = 'W'; 
	
	_Bool boolVar = 0; 
	
	printf ("integerVar = %i\n", integerVar); 
	printf ("floatingVar = %f\n", floatingVar); 
	printf ("doubleVar = %e\n", doubleVar); 
	printf ("doubleVar = %g\n", doubleVar); 
	printf ("charVar = %c\n", charVar); 
	
	printf ("boolVar = %i\n", boolVar); 
	
	return 0; 
} 

程序输出如下:

integerVar = 100 
floatingVar = 331.790009 
doubleVar = 8.440000e+11 
doubleVar = 8.44e+11 
charVar = W 
boolVar = 0; 


在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Deepseek】AnythingLLM + Ollama

1. 下载安装 anythingllm 下载地址&#xff1a;https://anythingllm.com/desktop 2. 启动anything 点击 Get started 3.创建工作空间 4.选择Ollama大语言模型 聊天设置 当前只有一个1.5b的模型 下载完成7b模型后 选择后记得点击更新到工作空间&#xff01;&…

vscode settings(一):全局| 用户设置常用的设置项

参考资料 Visual Studio Code权威指南 by 韩骏 一. 全局设置与用户设置 1.1 Vscode支持两种不同范围的设置 用户设置(User Settings)&#xff1a;这是一个全局范围的设置&#xff0c;会应用到所有的Visual Studio Code实例中。工作区设置(Workspace Settings)&#xff1a;设…

Deepseek和Grok 3对比:写一段冒泡排序

1、这是访问Grok 3得到的结果 2、grok3输出的完整代码&#xff1a; def bubble_sort(arr):n len(arr) # 获取数组长度# 外层循环控制排序轮数for i in range(n):# 内层循环比较相邻元素&#xff0c;j的范围逐渐减少for j in range(0, n - i - 1):# 如果当前元素大于下一个元…

【DeepSeek系列】05 DeepSeek核心算法改进点总结

文章目录 一、DeepSeek概要二、4个重要改进点2.1 多头潜在注意力2.2 混合专家模型MoE2.3 多Token预测3.4 GRPO强化学习策略 三、2个重要思考3.1 大规模强化学习3.2 蒸馏方法&#xff1a;小模型也可以很强大 一、DeepSeek概要 2024年&#xff5e;2025年初&#xff0c;DeepSeek …

redis中的Lua脚本,redis的事务机制

lua脚本的特点 lua脚本可以操作redis数据库&#xff0c;并且脚本中的代码满足原子性&#xff0c;要么全部被执行&#xff0c;要么全部不执行 lua脚本的语法 脚本示例 lua脚本的草稿&#xff1a; 最终的lua脚本 lua脚本在java里调用的方法 RedisTemplete类里有一个方法&…

文章精读篇——用于遥感小样本语义分割的可学习Prompt

题目&#xff1a;Learnable Prompt for Few-Shot Semantic Segmentation in Remote Sensing Domain 会议&#xff1a;CVPR 2024 Workshop 论文&#xff1a;10.48550/arXiv.2404.10307 相关竞赛&#xff1a;https://codalab.lisn.upsaclay.fr/competitions/17568 年份&#…

Golang访问Google Sheet

步骤 1、创建Project https://console.cloud.google.com/welcome?hlzh-cn&projectvelvety-being-444310-c1 2、启用Google Sheet API https://console.cloud.google.com/apis/library?hlzh-cn&projectvelvety-being-444310-c1 3、创建服务账号 https://conso…

HTTP SSE 实现

参考&#xff1a; SSE协议 SSE技术详解&#xff1a;使用 HTTP 做服务端数据推送应用的技术 一句概扩 SSE可理解为&#xff1a;服务端和客户端建立连接之后双方均保持连接&#xff0c;但仅支持服务端向客户端推送数据。推送完毕之后关闭连接&#xff0c;无状态行。 下面是基于…

网络安全与措施

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 # 网络安全问题概述 1) 数据安全 访问&#xff08;授权访问&#xff09;&#xff1b;存储&#xff08;容灾、备份或异地备份等&#xff09; 2) 应用程序 不能…

Next.js 学习-1

Next.js学习 引用&#xff1a;https://www.nextjs.cn/learn/basics/create-nextjs-app 先试试水吧&#xff0c;正好dify用的这个构建的前端项目。 使用 如果您尚未安装 Node.js&#xff0c;请 从此处安装。要求 Node.js 10.13 或更高版本。 好吧得用新的了&#xff0c;记得…

#渗透测试#批量漏洞挖掘#九思OA系列漏洞之SQL注入漏洞(CNVD-2023-23771)

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

macOS14 安装MySQL指南

1.下载 地址&#xff1a;https://downloads.mysql.com/archives/community/ 2.安装 双击 *.dmg 文件&#xff0c;按提示点击“下一步”&#xff0c;途中会弹出一个对话框&#xff0c;要求输入 root 密码&#xff0c;完成即可。 3.开启MySQL服务。 点击右上角苹果按钮&#x…

《Head First设计模式》读书笔记 —— 单件模式

文章目录 为什么需要单件模式单件模式典型实现剖析定义单件模式本节用例多线程带来的问题解决问题优化 Q&A总结 《Head First设计模式》读书笔记 相关代码&#xff1a; Vks-Feng/HeadFirstDesignPatternNotes: Head First设计模式读书笔记及相关代码 用来创建独一无二的&a…

Git常见命令--助力开发

git常见命令&#xff1a; 创建初始化仓库&#xff1a; git 将文件提交到暂存区 git add 文件名 将文件提交到工作区 git commit -m "注释&#xff08;例如这是发行的版本1&#xff09;" 文件名 查看状态 如果暂存区没有文件被提交显示&#xff1a; $ git status On…

【每日八股】Redis篇(二):数据结构

Redis 数据类型&#xff1f; 主要有 STRING、LIST、ZSET、SET 和 HASH。 STRING String 类型底层的数据结构实现主要是 SDS&#xff08;简单动态字符串&#xff09;&#xff0c;其主要应用场景包括&#xff1a; 缓存对象&#xff1a;可以用 STRING 缓存整个对象的 JSON&…

LLM大语言模型私有化部署-使用Dify的工作流编排打造专属AI诗词数据分析师

背景 前面的文章通过 Ollama 私有化部署了 Qwen2.5 (7B) 模型&#xff0c;然后使用 Docker Compose 一键部署了 Dify 社区版平台。 LLM大语言模型私有化部署-使用Dify与Qwen2.5打造专属知识库&#xff1a;在 Dify 平台上&#xff0c;通过普通编排的方式&#xff0c;创建了基于…

Linux虚拟机快照

快照管理 如果在使用虚拟机系统的时候(比如linux)&#xff0c;想回到原先的某一个状态&#xff0c;也就是说担心可能有些误操作造成系统异常&#xff0c;需要回到原先某个正常运行的状态 示例&#xff1a; 状态A和状态B处各保存了快照&#xff0c;运行到状态C时发生异常&…

【异常错误】pycharm debug view变量的时候显示不全,中间会以...显示

异常问题&#xff1a; 这个是在新版的pycharm中出现的&#xff0c;出现的问题&#xff0c;点击view后不全部显示&#xff0c;而是以...折叠显示 在setting中这么设置一下就好了&#xff1a; 解决办法&#xff1a; https://youtrack.jetbrains.com/issue/PY-75568/Large-stri…

快速入门Springboot+vue——MybatisPlus多表查询及分页查询

学习自哔哩哔哩上的“刘老师教编程”&#xff0c;具体学习的网站为&#xff1a;7.MybatisPlus多表查询及分页查询_哔哩哔哩_bilibili&#xff0c;以下是看课后做的笔记&#xff0c;仅供参考。 多表查询 多表查询[Mybatis中的]&#xff1a;实现复杂关系映射&#xff0c;可以使…

vscode 配置 Copilot 提示GHE.com连接失败

步骤一&#xff1a;打开设置并进入 settings.json 点击菜单栏中的 “文件” -> “首选项” -> “设置”。 在搜索设置栏中输入 “Copilot: Advanced”。 点击搜索结果下方的 “在 settings.json 中编辑” 链接&#xff0c;这会打开 settings.json 文件。 步骤二&#…