C语言基本数据类型(一)

news2024/11/16 7:20:14

文章目录

  • 前言

  • 一、int类型

  • 二、八进制和十六进制

  • 三、其他整数类型

  • 四、char 类型

  • 五、_Bool 类型

  • 六、 可移植类型:stdint.h和unttypes.h


前言

C语言基本数据类型包括声明变量、如何表示字面值常量,以及经典的用法。

一、int类型

C语言中包括许多的整数类型,在不同是情况可以选择不懂的数据类型。而且C语言中整数类型可以便是不同的取值范围和正负值。int类型是有符号整型,必须是整数,可以使正整数、负整数或者零。取值访问根据计算机系统来定。一般而言,存储一个int要占据一个机械字长。

1.1 声明int 变量

格式:int + 变量名+分号

int ans;
int gen,cows,gaots;

以上声明是创建的变量,未提供值。其可以直接赋值或者采用函数来赋值。

1.2初始化变量

初始化(initialize)变量就是为变量赋一个初始值。其可以在声明变量时完成。如:

int ans=100;
int cows=10,fla=24

声明为变量创建和标记存储空间,并为其指定初始值。

1.3 int 类型常量

C语言中将不含小数点和指数的数作为整数。

1.4 打印int值

可以采用printf()函数打印int类型的值。%d指明了在一行中打印整数在位置,%d称为转换说明,它指定了prinf()应使用什么格式来显示一个值。

二、八进制和十六进制

2.1引言

8和16是2是幂,其计数系统在表达与计算机相关的值时更加方便。在C语言中,用特定是前缀表示哪种进制。0x或0X前缀表示十六进制。0前缀表示八进制

2.2 显示八进制和十六进制

十进制显示数字,使用%d;

八进制显示数字,使用%o;

十六进制显示数字,使用%x;

显示各进制数的前缀0、0x和0X,必须分别使用%#o、%#x、%#X。其中在八进制和十六进制前显示0和0x前缀,要分别在转换说明中加入#

三、其他整数类型

C语言提供了3个附属关键字修饰基本整数类型:short、long和unsigned.


 3.1 打印short、long、long long和unsigned类型

打印unsigned int 类型的值,使用%u转换说明;

打印 long 类型的值,使用%ld转换说明。如果系统中int 和long 的大小相同,使用%d转换说明(但是一般可以移植)。

%lx表示十六进制格式打印long类型整数;

%ho表示以八进制格式打印long类型整数。

注意:C语言中允许使用大写或小写的常量后缀,但是在转换说明中只能用小写。

%hd表示以十进制显示short类型的整数;

%ho表示以八进制显示short类型的整数。

h和l 前缀都可以和u一起使用,用于表示无符号类型。

%lu表示打印unsigned long类型的值。

%lld表示有符号类型;

%llu表示无符号类型。

四、char类型

4.1 引言

char类型用于存储字符,从计数层面看,char是整数类型,因为char类型实际上存储的是整数而不是字符,计算机使用数字编码来处理字符,即用特定的 整数表示特定的字符。一般采用ASCII编码。

4.2 char 类型声明变量

char temp;
char ten,ptem;

4.3 字符常量和初始化

在C语言中,用单引号括起来的单个字符被称为字符常量(character constant)

char temp;  //声明一个char类型的变量
temp='a';   //为赋值,正确的赋值
temp=a;     //错误,此时a是一个变量
temp="a";   //错误,此时"a"是一个字符串

字符是以数值形式存储的,故也可以使用数字代码值类赋值

4.4 非打印字符

单引号值适用于字符、数字和标点符号。但是ASCII中有些字符打印不出来,在C语言中提供了3中方法表示这些字符:

方法1:一一使用ASCII码

方法2:使用特殊的符号序列表示一些特殊的字符。这些字符序列叫作转义序列(escape sequence)。把转义序列赋给字符变量时,必须用单引号把转义序列括起来。

转义序列表

 下面对转义序列进行介绍。

C90新增的警报字符(\a)是否能产生听到或看到的警报,取决于计算机的硬件,蜂鸣是最常见的警报(在一些系统中,警报字符不起作用)。

C标准规定警报字符不得改变活跃位置。标准中的活跃位置(active position)指的是显示设备(屏幕、电传打字机、打印机等)中下一个字符将出现的位置。简而言之,平时常说的屏幕光标位置就是活跃位置。在程序中把警报字符输出在屏幕上的效果是,发出一声蜂鸣,但不会移动屏幕光标。
接下来的

转义字符\b、\f、\n、\r、\t和\v是常用的输出设备控制字符。

换页符(\f)把活跃位置移至下一页的开始处;

换行符(\n)把活跃位置移至下一行的开始处;

回车符(\r)把活跃位置移动到当前行的开始处;

水平制表符(\t)将活跃位置移至下一个水平制表点(通常是第1个、第9个、第17个、第25个等字符位置);

垂直制表符(\v)把活跃位置移至下一个垂直制表点。
其中这些转义序列字符不一定在所有的显示设备上都起作用。例如,换页符和垂直制表符在PC屏幕上会生成奇怪的符号,光标并不会移动。只有将其输出到打印机上时才会产生前面描述的效果。


转义序列(\\、\'、\")用于打印\、'、"字符(由于这些字符用于定义字符常量,是printf()函数的一部分,若直接使用它们会造成混乱)。如果打印下面一行内容:
Gramps sez, "a \ is a backslash."
应这样编写代码:
printf("Gramps sez, \"a \\ is a backslash.\"\n");
最后两个转义序列(\0oo和\xhh)是ASCII码的特殊表示。如果要用八进制ASCII码表示一个字符,可以在编码值前面加一个反斜杠(\)并用单引号括起来。例如,如果编译器不识别警报字符(\a),可以使用ASCII码来代替:
beep = '\007';
可以省略前面的0,'\07'甚至'\7'都可以。即使没有前缀0,编译器在处理这种写法时,仍会解释为八进制。
从C90开始,不仅可以用十进制、八进制形式表示字符常量,C语言还提供了第3种选择——用十六进制形式表示字符常量,即反斜杠后面跟一个x或X,再加上1~3位十六进制数字。例如,Ctrl+P字符的ASCII十六进制码是10(相当于十进制的16),可表示为'\x10'或'\x010'。

int系列类型的常量写法实例

 五、_Bool类型

_Bool 类型用于便是布尔值,即逻辑值true和false.在C语言中用1表示true,用0表示false,所以_Bool类型实际上也是一种整数类型,但原则上仅占用1位存储空间,

六、可移植类型:stdint.h和unttypes.h

可移植类型:stdint.h和unttypes.h是为了确保C语言的类型在各系统中功能相同。

int32_t表示32位的有符号整数类型;

int_least8_t是可容纳8位有符号整数值的类型中宽度最小的类型的一本别名;

int_fast8_t被定义为系统中对8位有符号值而言运算最快是整数类型的别名;

intmax_t表示最大有符号整数值。

/* altnames.c -- 可移植整数类型名 */
#include <stdio.h>
#include <inttypes.h> // 支持可移植类型
int main(void)
{
     int32_t me32;     // me32是一个32位有符号整型变量

     me32 = 45933945;
     printf("First, assume int32_t is int: ");
     printf("me32 = %d\n", me32);
     printf("Next, let's not make any assumptions.\n");
     printf("Instead, use a \"macro\" from inttypes.h: ");
     printf("me32 = %" PRId32 "\n", me32);

     return 0;
}

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

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

相关文章

【openGauss】在openEuler(ARM架构)上安装openGauss(一主一备)

一、系统版本介绍 当前案例中的openGauss安装&#xff0c;底层操作系统为openEuler-20.03-LTS版本&#xff0c;当前openGauss对Python版本兼容性最好的是Python 3.6版本与Python 3.7版本&#xff0c;该实验使用的openEuler版本自带Python 3.7.4&#xff0c;不需要再自行安装 二…

零基础如何入门网络安全?2023年最新,建议收藏!

前言 最近收到不少关注朋友的私信和留言&#xff0c;大多数都是零基础小友入门网络安全&#xff0c;需要相关资源学习。其实看过的铁粉都知道&#xff0c;之前的文里是有过推荐过的。新来的小友可能不太清楚&#xff0c;这里就系统地叙述一遍。 01.简单了解一下网络安全 说白…

前端必会手写面试题合集

实现Event(event bus) event bus既是node中各个模块的基石&#xff0c;又是前端组件通信的依赖手段之一&#xff0c;同时涉及了订阅-发布设计模式&#xff0c;是非常重要的基础。 简单版&#xff1a; class EventEmeitter {constructor() {this._events this._events || ne…

电力系统IEEE33节点Simulink仿真研究(Matlab实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f389;作者研究&#xff1a;&#x1f3c5;&#x1f3c5;&#x1f3c5;主要研究方向是电力系统和智能算法、机器学…

arduino基本知识认识和学习资源

个人对ardunio的感觉 **像是一个模块化功能的单片机&#xff0c;编程时在单片机中就像python在计算机语言的感觉。**硬件方面的功能比较单一依赖于传感器和硬件电路&#xff1b;编程比较简单&#xff0c;所有执行的函数都已经被封装&#xff0c;所以想要成为第一个用这个库吃瓜…

【C语言刷题】猜名次、猜凶手、杨辉三角、杨氏矩阵、字符串左旋、判断是否为左旋子串

目录 一、猜名次 二、猜凶手 三、杨辉三角 解法一&#xff1a; 解法二 四、杨氏矩阵 解法一 解法二 五、字符串左旋 解法一 解法二 六、判断是否为字符串左旋字串 解法一 解法二 总结 一、猜名次 5位运动员参加了10米台跳水比赛&#xff0c;有人让他们预测比赛结果…

基于轻量级CNN开发构建学生课堂行为识别系统

其实早在之前&#xff0c;我的一些文章里面就有做过关于学生课堂行为检测识别的项目&#xff0c;感兴趣的话可以自行移步阅读&#xff1a;《yolov4-tiny目标检测模型实战——学生姿势行为检测》《基于yolov5轻量级的学生上课姿势检测识别分析系统》这些主要是偏目标检测类的项目…

Raft论文阅读

Raft 论文阅读 参考&#xff1a; Raft Paper 一文搞懂Raft算法 - xybaby Raft Demo Raft 实现汇总 Raft 为什么是更易理解的分布式一致性算法 空挡) Raft协议实现之etcd(一)&#xff1a;基本架构 Raft 协议 - buttercup 【raft】学习二&#xff1a;etcd/raft raft数据结构学…

第四十八讲:神州路由器IPv6静态路由配置

实验拓扑图如下所示 配置步骤&#xff1a; 步骤1&#xff1a;配置R1接口 R1_config#ipv6 unicast-routing //启用IPv6路由 R1_config#in g0/4 R1_config-_g0/4#ipv6 address 2001:10::1/64 //手工配置IPv6地址 R1_config-…

LInux背景【Linux】

一、技术推动社会发展的基本动力作为万物之长的人类&#xff0c;我们相较于其他的生物哪里是特殊的&#xff1f;举一个例子&#xff1a;老虎需要几千上万年进化来的爪子&#xff0c;人类可以在更短的时间内通过制造石矛石斧这类工具变可以模拟。通过这一个例子我们得出——人的…

python自学之《21天学通Python》(7)

第10章 Python进阶话题 10.1 函数与命名空间 Python中可以通过模块来管理复杂的程序&#xff0c;而将不同功能的函数分布在不同的模块中&#xff0c;那么函数及其全局命名空间决定了函数中引用全局变量的值。函数的全局命名空间始终是定义该函数的模块&#xff0c;而不是调用该…

java面试之Spring篇

一、Spring概述 1. Spring由哪些模块组成 spring core&#xff1a;提供了框架的基本组成部分&#xff0c;包括控制反转&#xff08;Inversion of Control&#xff0c;IOC&#xff09;和依赖注入&#xff08;Dependency Injection&#xff0c;DI&#xff09;功能。spring beans…

windows无线连接Linux服务器,实现终端操作与文件传输

0、建议安装完Ubuntu后按照百问网的设置安装必要的linux软件 执行&#xff1a; git clone https://e.coding.net/weidongshan/DevelopmentEnvConf.git cd DevelopmentEnvConf sudo ./Configuring_ubuntu.sh 等待安装完成&#xff0c;大约半个小时事件。 我搭建的环境 家…

git的使用

一、创建仓库 gitee官网创建好用户之后&#xff0c;我们点创建仓库。 选择好语言&#xff0c;开源许可证随便选一个即可&#xff0c;模板我们最好设置一个Readme文件&#xff0c;方便后面写明仓库的介绍。 分支模型我们新手选一个单分支模型就可以了。 因为仓库创建的时候只能…

Windows下Canal.admin-1.1.6安装部署

一、下载解压 1 下载 进入页面&#xff1a;Release v1.1.6 alibaba/canal GitHub 下载 canal.admin-1.1.6.tar.gz 2 解压 解压至目录&#xff1a;D:\Tools\canal.admin-1.1.6 二、创建数据库 canal_manager 1 创建时间数据库&#xff1a;canal_manager 2 初始化元数据…

并发编程学习案例-模拟抢红包

一、前言 再来系统动手学习一下Java并发编程。 知识点&#xff1a;CountDownLatch 的发令枪使用模式&#xff1b;红包均分&#xff0c;最后一个分不完的解决方法 抢红包的需求,每个红包均分&#xff0c;最后一个除外 1. 设置红包总额 2. 设置红包的个数 3. 模拟抢红包的人数 &a…

图文结合带你搞懂MySQL日志之relay log(中继日志)

GreatSQL社区原创内容未经授权不得随意使用&#xff0c;转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本&#xff0c;使用上与MySQL一致。作者&#xff1a; KAiTO文章来源&#xff1a;GreatSQL社区原创 什么是中继日志&#xff08;relay log&#xff09; 中继日志&a…

线程,协程,异步编程模型

线程,协程,异步编程模型 1.线程编程模型 我们知道线程是 cpu 调度的基本单位。 如果是一个单核的cpu, 而且现在有3个线程需要执行。那么可能是 线程 1, 2, 3 通过 cpu分片&#xff0c; 轮流执行。 那么 如果不将 cpu 进行分片&#xff0c; 而是 线程 1,2,3 轮流执行&#x…

Springboot中如何优雅的写好controller层代码

前言优雅&#xff1f;看到这个词&#xff0c;我第一反应是什么是优雅&#xff1f;怎么写才算优雅&#xff1f;一千个读者有一千个哈姆雷特&#xff0c;每个人的经验、阅历不同&#xff0c;也许理解就不同。我对优雅的理解很简单&#xff0c;就是简洁有效、容易理解&#xff0c;…

递归、迭代、单向快排的实现和两种优化方法

目录 快速排序 实现代码​​​​​​​ 时间复杂度 快排的优化 随机选择策略 三位取中法 非递归的快排 单向快排 快速排序 快速排序算法是基于分治策略的一个排序算法&#xff0c;其基本思想是对于输入的子数组进行分解、递归求解&#xff0c;最后合并。 分解&#xff…