笔记——C语言

C语言是一种结构化的程序设计语言

空格的ASCII码值是32,空格是属于可打印字符

\0是字符串结束的标志,字符串的末尾隐藏了一个\0

printf()在打印字符串或者strlen在计算字符串长度的时候,遇到\0的时候就自动停止。

strlen返回的值是size_t类型的,应该使用%zd进行打印

C语言中支持一种东西,叫三字母词,以前的编译器会支持三字母词,但现在的编译器基本上都不支持了

三字母词是以??开始加一个其它的符号,比如说??)–>], ??(–>[

举例说明:

int main()
{printf("(are you ok??)");//这个输出的结果是(are you ok]return 0;
}
//如果想让这里的'?'不再是三字母词里的问号,就可以用转义字符'\?',例如这里写为printf("(are you ok\?\?)");

有两种非常奇葩的转移字符,下面两种转义字符可以理解为:字符的八进制或者十六进制表示形式

  • \ddd: d d d 表示1~3个八进制数字。 如:\130表示字符x

  • \xdd: d d表示两个十六进制数字。 如:\x30表示字符0

    \0 :null 字符,代表没有内容, \0 就是 \ddd 这类转义字符的⼀种,⽤于字符串的结束标志,其

ASCII码值是0.

\b这个转义字符,光标回退一个字符,到底会不会删除字符????????

编译时,注释会被替换成⼀个空格,所以 min/* 这⾥是注释*/Value 会变成 min Value ,⽽不

minValue ,也就相当于删掉了。

编程是为了解决生活中的问题,计算机语言来写代码——得有能力描述生活中的问题,那么生活中有那么多数据,因此C语言中有许多的数据类型。

1个二进制位的存储需要一个bit位的空间

1KB = 1024Byte 1024=2的10次方

C语言标准规定:

sizeof(long) >= sizeof(int),所以说sizeof(long)可能是4也可能是8,看不同的编译器。

并且sizeof(long double) >= sizeof(double)这个也是这样。

数据类型就相当于模具,sizeof的单位是字节

sizeof 的计算结果是 size_t 类型的。

📌 sizeof 运算符的返回值,C 语⾔只规定是⽆符号整数,并没有规定具体的类型,⽽是留给

系统⾃⼰去决定, sizeof 到底返回什么类型。不同的系统中,返回值的类型有可能是

unsigned int ,也有可能是 unsigned long ,甚⾄是 unsigned long long

对应的 printf() 占位符分别是 %u%lu %llu 。这样不利于程序的可移植性。

C 语⾔提供了⼀个解决⽅法,创造了⼀个类型别名 size_t ,⽤来统⼀表⽰ sizeof 的返

回值类型。对应当前系统的 sizeof 的返回值类型,可能是 unsigned int ,也可能是

unsigned long long

sizeof中如果放的是表达式,表达式不会真实计算!

  • char ---- char 到底是有符号还是无符号呢? 这个不确定,是取决于编译的实现,大部分编译器上char就等价于signed char

    signed char

    unsigned char

  • int 是有符号还是无符号呢?

    int 就是等价于signed int, short也是等价于signed short, long也是等价于signed long, long long也是等价于signed long long

    signed int

    unsigned int

创建变量的同时给它一个值,这叫初始化。而已经有了变量以后给它值,这个叫赋值,这是两码事。

在C语言中,直接给一个小数,例如:3.14这个会默认为double类型,而像3.14f这样写,就认为是一个float类型了。

当全局变量和局部变量名字相同的时候,局部变量优先。

c = b = a+3;像这种连续赋值,是从右向左依次赋值的

C语⾔虽然⽀持这种连续赋值,但是写出的代码不容易理解,建议还是拆开来写,这样⽅便观察代码的

执⾏细节。

int main()
{int a = (int)3.14;printf("%d\n", a);return 0;
}

这个强制类型转换就是把整数留下来,把小数部分直接就丢了。

函数不写返回类型,编译器会默认函数返回类型为一个int整型。

如果函数要求返回值,但函数中没有使用return返回值,那具体返回什么就不确定。

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

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

相关文章

flutter开发实战-AssetBundle读取指定packagename的文件

flutter开发实战-AssetBundle读取指定packagename的文件 在Flutter中,如果你想从特定的包名中读取资源文件,你可以使用rootBundle类来访问packages目录下的资源。下面使用rootBundle来读取包名为my_package的资源文件user.json 一、pubspec.yaml配置 …

MongoDB教程(二十二):MongoDB固定集合

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 文章目录 引言一、固定集…

FastGPT 源码调试配置

目录 一、添加 launch.json 文件 二、调试 本文简单介绍如何通过 vscode 对 FastGPT 进行调试。 这里假设已经安装 vsocde 和 FastGPT本地部署。 一、添加 launch.json 文件 vscode 打开 FastGPT 项目,点击 调试 -> 显示所有自动调试配置 -> 添加配置 -> Node.j…

笔记分类的烦恼

前言 你是否为笔记的分类而苦恼,是否迷失在市面上纷繁复杂的笔记分类法? 不用再烦恼了,本文将介绍一个适用于个人笔记的终极分类办法,只需三刀,尘埃落定。 🔪 第一刀 笔记场景 🍰 也就是笔记…

通用网络验证系统,承载能力强,支持高并发、高承载、多线路

这个网络验证系统基于PhpMySql数据库架构的网络验证系统,安全稳定、性能强悍、 承载能力强,支持高并发、高承载、多线路,支持服务器集群架设,高性能设计,速度非常快,效率非常高。 客户端支持VC、VB、DELPHI、易语言、…

Kotlin Flows 流 — 基础

Kotlin Flows 流 — 基础 上一篇研究了 Kotlin 协程。上一篇文章重点介绍了协程的一些基础知识,如协程上下文(CoroutineContext)、协程作用域(CoroutineScope)、协程构建器等。如承诺的那样,这是关于流&…

C++内存管理(候捷)第四讲 笔记

上中下三个classes分析 Loki allocator的三个类,从低阶到高阶分别为:Chunk, FixedAllocator, SmallObjAllocator Chunk:pData指针,指向分配的一个chunk,firstAvailableBlock_索引,指向第一个可用区块是第几…

数据结构day3(双向链表操作)

链式存储: 双向链表 线性表的链式存储:解决了顺序存储的缺点,插入和删除。动态存储问题。 数据域 指针 ---> 节点 注意:用自己结构的指针一般就是 链表。 DoubleLInk.h文件 #ifndef DOULINK_H #define DOULINK_H…

自动导入unplugin-auto-import+unplugin-vue-components

文章介绍 接下来将会以Vite Vue3 TS的项目来举例实现 在我们进行项目开发时,无论是声明响应式数据使用的ref、reactive,或是各种生命周期,又或是computed、watch、watchEffect、provide-inject。这些都需要前置引入才能使用: …

基于PSO粒子群优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 粒子群优化算法(PSO) 4.2 分组卷积神经网络(GroupCNN) 4.3 PSO优化GroupCNN 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行…

【已解决】Python ValueError: math domain error 详解

【已解决】Python ValueError: math domain error 详解 在Python编程中,遇到ValueError: math domain error是一个相对常见的问题。此错误通常表明传递给数学函数的参数超出了其定义域。本文将深入探讨此错误的根源、解决思路、具体解决方法、常见场景分析以及扩展…

【在Linux世界中追寻伟大的One Piece】Linux进程概念

目录 1 -> 冯诺依曼体系结构 2 -> 操作系统(operator System) 2.1 -> 概念 2.2 -> 系统调用和库函数 3 -> 进程 3.1 -> 概念 3.2 -> 进程-PCB 3.3 -> 进程状态 3.3.1 -> Z(Zombie)-僵尸进程 3.3.2 -> 孤儿进程 3.4 -> 进程优先级 …

Linux下如何安装配置Fail2ban防护工具

Fail2ban是一款在Linux服务器上用于保护系统免受恶意攻击的防护工具。它通过监视系统日志,检测到多次失败的登录尝试或其他恶意行为后,会自动将攻击源的IP地址加入防火墙的黑名单,从而阻止攻击者进一步访问服务器。本文将介绍如何在Linux系统…

Animate.css的使用

一、安装 npm install animate.css --save二、引入 import animate.css;三、使用 <h1class"animate__animated animate__bounce"mouseenter"mouseenter"mouseleave"mouseleave">An animated element</h1>//在js中的方法 function …

五. TensorRT API的基本使用-TensorRT-network-structure

目录 前言0. 简述1. 案例运行2. 代码分析2.1 main.cpp2.2 model.cpp 总结下载链接参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》&#xff0c;链接。记录下个人学习笔记&#xff0c;仅供自己参考 本次课程我们来学习课程第五章—TensorRT API 的基本使用&#x…

Redisson分布式锁使用详解

引言 日常开发中&#xff0c;难免遇到一些并发的场景&#xff0c;为了保证接口执行的一致性&#xff0c;通常采用加锁的方式&#xff0c;因为服务是分布式部署模式&#xff0c;本地锁Reentrantlock和Synchnorized这些就先放到一边了&#xff0c;Redis的setnx锁存在无法抱保证原…

九-2、Rocky Linux软件包管理与安装 学习笔记

1. DNF的rocky linux管理 DNF: Dandified YUM,基于RPM的Linux软件包管理器&#xff0c;是YUM的下一代版本。 Dnf命令和yum命令兼容&#xff0c;依然使用yum仓库。 dnf module在软件安装上更方便&#xff0c;可以通过dnf module install 在安装软件时指定安装的版本&#xff0…

QT开发(QT的基本概述和环境的安装)

QT的概述 一.QT的介绍背景1.1 什么是QT1.2QT的发展史1.3 Qt支持的平台1.4QT版本1.5QT的优点1.6QT的应用场景 二.搭建QT开发环境2.1 QT的开发工具的下载2.2 QT环境变量配置 三.QT的三种基类四.QT Hello World程序4.1使用按钮实现4.1.1 代码方式实现4.1.2 可视化操作实现 一.QT的…

【C#】在一个给定的宽、高范围内,获取到该多边形内部的所有坐标集合?

问题点 使用C#语言在一个给定的宽、高范围内&#xff0c;获取到该多边形内部的所有坐标集合&#xff1f; 这个多边形可能存在交叉及互相重叠部分 图像的宽、高可以定义为&#xff1a;2000*2000 多边形坐标集合&#xff1a;Point[] polygon_points new Point[] { new Point…

如何在vscode中对在服务器上多卡运行的bash脚本进行debug?

问题描述 使用vscode可以很方便地添加断点&#xff0c;进行代码调试。 在使用服务器时&#xff0c;我们的python代码通常是通过bash脚本来执行的&#xff0c;那么如何进行debug呢&#xff1f; 待运行的bash 脚本示例 前半段定义了一些参数&#xff0c;后半段是执行python代码…