【C语言】基础知识杂记(整理自用)

前言

之前一直在学新知识,最近打算复习一下之前学的,所以写了这篇文章,记录一下不熟练的知识点,自用,对大家帮助可能不是很大。

double类型与float类型

编译器默认7.0为double类型

在数据后加一个f,编译器就会认为7.0f为float类型

%的使用

取模

当%作为取模操作符来使用时,其左右两边必须是整数,不能是小数

打印%

当想打印出%时,使用%%,输出结果是%

#include<stdio.h>

int main()
{
	printf("%%");
	
	return 0;
}

输出结果:
在这里插入图片描述

!与~

逻辑反操作:真表示为假,假表示为真

#include<stdio.h>

int main()
{
	int a = 4;
	if (a == 4)
	{
		printf("1\n");
	}

	if (!(a == 4))
	{
		printf("1\n");
	}
	else
	{
		printf("0\n");
	}

	return 0;
}

运行结果:

在这里插入图片描述

~

将1取反为0、0取反为1

注意:

位操作符,操作的都是补码

提示:

-1的补码是32个1

sizeof和strlen

sizeof运算符

计算的元素在内存中占用的空间大小,单位是字节

最根本的区别是:sizeof是运算符,不是函数。并且sizeof可计算任意数据类型的大小
(当我尝试搜一下sizeof的源码看看它是怎么实现的时候,发现,它是运算符…)

‘\0’

注意,在计算数组的字节大小时,是包含’\0’的,因为\0也是里面的元素之一

strlen函数

计算数组中的元素个数,返回值类型是size_t,
strlen是函数,不是运算符。并且strlen函数只能计算数组的元素个数

‘\0’

strlen函数是计算‘\0’之前的元素个数,遇到‘\0’停止读取,并返回一个无符号整数,
此处涉及到strlen函数是如何实现的,此处附上它的源码

size_t __cdecl strlen (
        const char * str
        )
{
        const char *eos = str;

        while( *eos++ ) ;

        return( eos - str - 1 );
}

%g与%e

%g

在输出浮点型数据时,使用%g,编译器会选择是按照%f还是%e的方式来打印数据。哪种方式短就选择哪种,不输出无意义的0

%e

以指数的形式输出实数,
当对于输出无精度要求时,部分编译器自动认为小数部分有5位,指数部分有6位,
并且,小数点前只有1位(标准化指数形式)

示例:

下面用一段代码来区分%f、%e、%g

#include<stdio.h>

int main()
{
	float a = 123.321;
	printf("%f\n%e\n%g\n", a, a, a);

	return 0;
}

在这里插入图片描述

%G和%E

就是e在打印时是大写

static修饰的(局部、全局)变量和函数

static:静态的

用法一:static修饰局部变量

我们都知道:
局部变量在每次进入函数会重新创建,出了函数就会销毁(将空间还给操作系统)

并且局部变量存储在栈区,进入作用域自动创建,出作用域自动销毁

本质:

使变量的存储位置发生了变化

注意:

变量的作用域没变,无法出作用域使用 ,即无法在变量所处函数外面使用

static延长的是生命周期

修饰后:

局部变量出了作用域不会回收,局部变量的生命周期被延长,如果反复调用函数,会出现累积的效果,如:累加、累乘等

此时的局部变量已经存储在静态区,直到程序结束,该变量才会被回收

多说一句:
static所在代码在编译期间已分配地址,其代码行在运行时不再执行,即其地址不再变化(静态区)

用法二:static修饰全局变量

1:

全局变量无法在其他源文件中被引用

2:

使其只能在其所在的源文件内部使用
(即使其外部链接属性变为内部链接属性)

用法三:static修饰函数

注意:函数不存在生命周期这种说法

修饰前:

函数具有外部链接属性,即可以在其他源文件内被调用(使用extern声明)

修饰后:

外部链接属性变为内部链接属性

函数只能在其所在的源文件内部使用,其他源文件无法使用

好处:

这样就能设多个名字相同的函数,并且也不会发生冲突
(应该很少有人其名字一样的函数吧)

输出控制符

此处就整理了一些我不太会的,比较常见的我就没整理

%p

输出指针地址

十进制输出

%hd

以有符号整型的形式输出short类型整数

%u

以无符号整型的形式输出unsigned int类型的整数

八进制输出

%o

无前缀,以无符号的方式输出int类型的整数

%#o

以有前缀、无符号的形式输出int类型的整数

十六进制

%x

以小写、无前缀、无符号的形式输出int类型的整数

%#x

有前缀的形式输出整数

%X

以大写的形式输出整数

移位操作符

左移操作符和右移操作符

左移操作符

左边丢弃、右边补0
有*2的效果

提示:即使是负数,其运算之后不改变符号

右移操作符

分为两种右移方式:算术右移和逻辑右移

逻辑右移:

右边直接丢弃,左边补0

算术右移:

右边直接丢弃,左边补符号位
原来是负数,左边补1
原来是正数,左边补0
有/2的效果

大部分编译器采用的都是算数右移

结语

先复习到这里,之后会接着复习指针及后面的知识

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

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

相关文章

机器人远程控制软件设计

机器人远程控制软件设计 That’s all.

2023年高教社杯 国赛数学建模思路 - 复盘:光照强度计算的优化模型

文章目录 0 赛题思路1 问题要求2 假设约定3 符号约定4 建立模型5 模型求解6 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 问题要求 现在已知一个教室长为15米&#xff0c;宽为12米&…

麒麟系统上安装 MySQL 8.0.24

我介绍一下在麒麟系统上安装 MySQL 8.0.24 的详细步骤&#xff0c;前提是您已经下载了 mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz 安装包。其实安装很简单&#xff0c;但是有坑&#xff0c;而且问题非常严重&#xff01;由于麒麟系统相关文章博客较少&#xff0c;导致遇到了…

openCV实战-系列教程7:轮廓检测2与模板匹配(轮廓检测/轮廓特征/轮廓近似/轮廓边界矩阵/轮廓边界圆/模版匹配)、原理解析、源码解读

打印一个图片可以做出一个函数&#xff1a; def cv_show(img,name):cv2.imshow(name,img)cv2.waitKey()cv2.destroyAllWindows() 1、轮廓特征与近似 1.1 轮廓特征 前面我们计算了这个图片的轮廓&#xff1a; 它的轮廓信息保存在了contours中&#xff0c;取出第一个轮廓&…

还不知道怎么提示LLM?ChatGPT提示入门

文章目录 简介&#xff1a;什么是人工智能&#xff1f;什么是提示过程&#xff1f;为什么会出现这样的差异&#xff1f; 为什么需要提示过程&#xff1f;1) 文章摘要2) 数学问题求解 如何进行提示过程&#xff1f;角色提示&#xff1a;多范例提示&#xff1a;无范例提示单范例提…

春秋云镜 CVE-2019-16113

春秋云镜 CVE-2019-16113 Bludit目录穿越漏洞 靶标介绍 在Bludit<3.9.2的版本中&#xff0c;攻击者可以通过定制uuid值将文件上传到指定的路径&#xff0c;然后通过bl-kernel/ajax/upload-images.php远程执行任意代码。 启动场景 漏洞利用 exp https://github.com/Kenun…

长时间序列的25米全球sar卫星镶嵌数据

数据简介 1992年JAXA&#xff08;Japan Aerospace Exploration Agency&#xff0c;日本宇宙航空研究开发机构&#xff09;发射了一颗JERS-1卫星&#xff0c;该卫星携带有18*24m分辨率的SAR传感器。随后&#xff0c;JAXA又在2006年和2014年分别发射了带有SAR传感器的alos卫星和…

数学建模及数据分析 || 4. 深度学习应用案例分享

PyTorch 深度学习全连接网络分类 文章目录 PyTorch 深度学习全连接网络分类1. 非线性二分类2. 泰坦尼克号数据分类2.1 数据的准备工作2.2 全连接网络的搭建2.3 结果的可视化 1. 非线性二分类 import sklearn.datasets #数据集 import numpy as np import matplotlib.pyplot as…

[MyBatis系列②]Dao层开发的两种方式

目录 1、传统开发 1.1、代码 1.2、存在的问题 2、代理开发 2.1、开发规范 2.2、代码 ⭐mybatis系列①&#xff1a;增删改查 1、传统开发 传统的mybatis开发中&#xff0c;是在数据访问层实现相应的接口&#xff0c;在实现类中用"命名空间.id"的形式找到对应的映…

Springboot+mybatis-plus+dynamic-datasource+Druid 多数据源 分布式事务

Springbootmybatis-plusdynamic-datasourceDruid 多数据源事务&#xff0c;分布式事务 文章目录 Springbootmybatis-plusdynamic-datasourceDruid 多数据源事务&#xff0c;分布式事务0.前言1. 基础介绍ConnectionFactoryAbstractRoutingDataSource 动态路由数据源的抽象类 Dyn…

SpringBoot概述SpringBoot基础配置yml的使用多环境启动

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 SpringBoot简介 一、 SpringBoot概述1.1 起步依赖…

前端(十四)——DOM节点操作手册:你需要了解的一切

&#x1f642;博主&#xff1a;小猫娃来啦 &#x1f642;文章核心&#xff1a;DOM节点操作手册&#xff1a;你需要了解的一切 文章目录 前言DOM基础知识操作现有节点创建新节点遍历节点树修改节点属性和样式事件处理实践应用动态创建表格动态更新列表 前言 DOM&#xff08;文档…

Python爬虫逆向实战案例(五)——YRX竞赛题第五题

题目&#xff1a;抓取全部5页直播间热度&#xff0c;计算前5名直播间热度的加和 地址&#xff1a;https://match.yuanrenxue.cn/match/5 cookie中m值分析 首先打开开发者工具进行抓包分析&#xff0c;从抓到的包来看&#xff0c;参数传递了查询参数m与f&#xff0c;同时页面中…

C# 工厂模式

一、概述 工厂模式&#xff08;Factory Pattern&#xff09;是一种创建型设计模式&#xff0c;它提供了一种创建对象的最佳方式。在C#中&#xff0c;工厂模式通过定义一个公共接口或抽象类来创建对象&#xff0c;而具体的对象创建则由工厂类来实现。 工厂模式主要包含三个角色…

opencv-dnn

# utils_words.txt 标签文件 import osimage_types (".jpg", ".jpeg", ".png", ".bmp", ".tif", ".tiff")def list_images(basePath, containsNone):# return the set of files that are validreturn list_file…

element-ui中的el-table合并单元格

描述&#xff1a; 在写项目的时候有时候会经常遇到把行和列合并起来的情况&#xff0c;因为有些数据是重复渲染的&#xff0c;不合并行列会使表格看起来非常的混乱&#xff0c;如下&#xff1a; 而我们想要的数据是下面这种情况&#xff0c;将重复的行进行合并&#xff0c;使表…

春秋云境:CVE-2022-0543(Redis 沙盒逃逸漏洞)

目录 一、i春秋题目 二、CVE-2022-0543&#xff1a;&#xff08;redis沙盒逃逸&#xff09; 漏洞介绍&#xff1a; 漏洞复现&#xff1a; 一、i春秋题目 靶标介绍&#xff1a; Redis 存在代码注入漏洞&#xff0c;攻击者可利用该漏洞远程执行代码。 进入题目&#xff1a;…

vue 展开和收起

效果图 代码块 <div><span v-for"(item,index) in showHandleList" :key"item.index"><span>{{item.emailFrom}}</span></span><span v-if"this.list.length > 4" click"showAll !showAll">{…

element-ui中的el-table的summary-method(合计)的使用

场景图片&#xff1a; 图片1&#xff1a; 图片2&#xff1a; 一&#xff1a;使用element中的方法 优点&#xff1a; 直接使用summary-method方法&#xff0c;直接&#xff0c;方便 缺点&#xff1a; 只是在表格下面添加了一行&#xff0c;如果想有多行就不行了 1&#xff1a;h…

计算机提示mfc120u.dll缺失(找不到)怎么解决

在计算机领域&#xff0c;mfc120u.dll是一个重要的动态链接库文件。它包含了Microsoft Foundation Class (MFC) 库的特定版本&#xff0c;用于支持Windows操作系统中的应用程序开发。修复mfc120u.dll可能涉及到解决与该库相关的问题或错误。这可能包括程序崩溃、运行时错误或其…