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

news2025/6/15 1:53:57

前言

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

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的效果

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

结语

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

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

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

相关文章

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

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

mac地址、ip地址、子网掩码、端口

1. mac地址 又称为网络适配器或者网络接口卡NIC&#xff0c;但是现在更多人原因使用更简单的名称"网卡"&#xff0c;通过网卡能够是不同的计算机之间相互连接&#xff0c;从而完成数据通信的功能 每一个网卡在出厂的时候 都会给分配到一个编号&#xff0c;类似与身份…

信创测试:创意与创新的评估之路

在当今竞争激烈的商业环境中&#xff0c;创意和创新成为企业脱颖而出的关键。为了有效评估和提升创意与创新的水平&#xff0c;信创测试被引入作为一个重要的工具。本文将介绍信创测试的概念、意义以及应用&#xff0c;探讨它在推动企业创新发展中的重要作用。 一、什么是信创测…

DOS常见命令

DOS常见命令 DOS是什么如何打开DOScmd常见的命令集合 DOS是什么 DOC命令是我们浏览器中的终端 &#xff0c;但不同的是我们打开软件的方式 使用的是点击文件图标&#xff0c;点击图标的同时 我们也相当于使用一个命令 只是我们看不见而已 在电脑上操作的时候 通常都是使用命令…

Docker微服务实战

文章目录 业务需求IDEA编写代码编写Dockerfile构建镜像运行容器网页端访问测试 业务需求 利用Docker部署应用服务&#xff0c;实现在网页端通过输入地址 ip:端口/hello/docker&#xff0c;页面显示hello docker ! IDEA编写代码 创建springboot项目 网上很多教程,此步骤省略……

Mybatis动态之灵活使用下

目录 ​编辑 前言&#xff1a; 1.mybatis的分页 1.1分页的应用场景 1.2分页的使用方式 2.mybatis中特殊字符处理 2.1mybatis中特殊字符介绍 2.2mybatis中特殊字符的使用方式 前言&#xff1a; 上篇我已经写了Mybatis动态之灵活使用&#xff0c;接着上篇写mybatis的分页…

QT6串口模块QSerialport的安装,主要是“编译器”版本问题

参考文档 https://blog.csdn.net/lidandan2016/article/details/85929069 https://blog.csdn.net/qq_42968012/article/details/126020554 https://blog.csdn.net/weixin_48467622/article/details/119982667 整体测试解决步骤总结 首先&#xff0c;QT6都不能进行离线安装&a…

Cocos独立游戏开发框架中的计时器管理器

引言 本系列是《8年主程手把手打造Cocos独立游戏开发框架》&#xff0c;欢迎大家关注分享收藏订阅。在独立游戏开发中&#xff0c;计时器是一个至关重要的组件&#xff0c;用于管理时间相关的操作&#xff0c;如动画效果、技能冷却、任务进度等。然而&#xff0c;随着游戏变得…

【王道-绪论-计算机系统概述】

#pic_center R 1 R_1 R1​ R 2 R^2 R2 目录 知识框架No.1 操作系统的概念功能和定义一、操作系统的概念和定义二、操作系统的功能和目标1、资源的管理者2、向用户提供服务2.1图形化用户接口2.2联机命令接口2.3脱机命令接口2.4程序接口 3、对硬件机器的拓展 三、总结 No.2 操作系…

QT6新建工程方式导致pro文件和无pro文件,

QT6创建工程文件的不同 cmake创建的无.pro工程 qmake创建的有.pro文件的工程

VMware Workstation 不支持在此主机上使用虚拟化性能计数器。

目录 问题描述&#xff1a;VMware Workstation 不支持在此主机上使用虚拟化性能计数器。解决办法&#xff1a; 问题描述&#xff1a;VMware Workstation 不支持在此主机上使用虚拟化性能计数器。 打开其他地方移植过来的虚拟机失败 解决办法&#xff1a; 编辑虚拟机设置&am…

配置门槛这么低,Fooocus你值得拥有!

简介&#xff1a; Fooocus是一个图像生成软件,可以用于生成各种图像。 其主要特点是: 离线使用,不依赖云服务开源免费,代码开放自动化了许多内部优化,简化用户操作只需要关注提示和图像,实现人机交互安装简单,兼容性强硬件需求低,可以在普通笔记本上运行性能优异,速度很快内…

Linux socket网络编程概述 和 相关API讲解

socket网络编程的步骤 大体上&#xff0c;连接的建立过程就是&#xff1a;服务器在确定协议类型后&#xff0c;向外广播IP地址和端口号&#xff0c;并监听等待&#xff0c;直到客户端获取了IP地址和端口号并成功连接&#xff1a; 使用socket来进行tcp协议的网络编程的大体步骤…

53 个 CSS 特效 2

53 个 CSS 特效 2 这里是第 17 到 32 个&#xff0c;跟上一部分比起来多了两个稍微大一点的首页布局&#xff0c;上篇&#xff1a;53 个 CSS 特效 1&#xff0c;依旧&#xff0c;预览地址在 http://www.goldenaarcher.com/html-css-js-proj/&#xff0c;git 地址&#xff1a; …

Redis数据结构之Set

Set 类型是一个无序并唯一的键值集合&#xff0c;它的存储顺序不会按照插入的先后顺序进行存储。Redis 中集合是通过哈希表实现的&#xff0c;所以添加&#xff0c;删除&#xff0c;查找的复杂度都是 O(1)。相对于列表&#xff0c;集合也有两个特点&#xff1a;无序、不可重复 …

docker安装redis并持久化数据

1. 创建挂载目录 sudo mkdir -p /home/redis/conf sudo mkdir -p /home/redis/data sudo touch /home/redis/conf/redis.confcat > /home/redis/conf/redis.conf << EOF appendonly yes EOFrootk8s-master:/home/redis# ls conf data rootk8s-master:/home/redis# t…

基于SSM的小说网站的设计与实现(论文+源码)

目 录 1 绪论................................................................................................... 1 1.1 项目背景................................................................................................................ 1 1.2 发展历程..…

ssm+vue毕业论文管理系统源码和论文

ssmvue毕业论文管理系统053 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘 要 高校规模越来越大&#xff0c;学生越来越多&#xff0c;每年都有大批的大学生完成学业。毕业之前&#xff0c;各大高校设立…

【经验贴】大型复杂项目的风险管理如何做?

同事小李在年初的时候&#xff0c;接了一个大型项目&#xff0c;以为今年的年终奖都靠它了&#xff0c;结果现在面临着超支、超期的风险&#xff0c;各种风险及问题频发。前段时间经常跟我们沟通讨论&#xff0c;在大家的建议下&#xff0c;项目才逐渐步入正轨&#xff0c;这次…

Linux_4_文本处理工具和正则表达式

目录 1文本编辑工具之神VIM1.1 vi和vim简介1.2使用vim1.2.1 vim 命令格式1.2.2三种主要模式和转换 1.3扩展命令模式1.3.1扩展命令模式基本命令1.3.2 地址定界1.3.3查找并替换1.3.4定制vim的工作特性1.3.4.1行号1.3.4.2忽略字符的大小写1.3.4.3白动缩进1.3.4.4复制粘贴保留格式1…