c/c++:数据类型,常量变量,标识符,有符号整型,无符号unsigned,字符类型,字符串类型,实数类型,浮点型,科学计数法

news2025/3/1 14:23:06

c/c++:数据类型,常量变量,标识符,有符号整型,无符号unsigned,字符类型,字符串类型,实数类型,浮点型,科学计数法

2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,此时学会c++的话,
我所知道的周边的会c++的同学,可手握10多个offer,随心所欲,而找啥算法岗的,基本gg
提示:系列c++学习的基础和高阶知识,用于公司生产实践中,实实在在的公司部署产品要用的,因为c++速度快,
而java和Python速度慢,自然往硬件里面部署算法啥的,都得用c++或者c,因此本科学的c很重要,后来的Python或者java就没有那么重要了,
c/c++系列文章:
【1】c++:c语言优缺点,visual studio2019如何新建项目,写hello world程序
【2】c/c++:gcc安装,gcc编译hello world文件,system函数调用系统命令,sleep函数
【3】linux下gcc的编译过程和功能,预处理,编译,汇编,链接,.c预处理为.i文件.s文件.o文件.exe文件
【4】c/c++:windows平台下依赖的动态库,c底层是汇编语言,程序断点调试,反汇编,vs快捷键


文章目录

  • c/c++:数据类型,常量变量,标识符,有符号整型,无符号unsigned,字符类型,字符串类型,实数类型,浮点型,科学计数法
    • @[TOC](文章目录)
  • c/c++:常量,不会变化的数据
  • 变量,会变化的量,可以重新定义
  • 标识符命名规则
  • 无符号整型unsigned
  • 字符类型,字符串类型
  • 实数类型,浮点型
  • 总结

c/c++:常量,不会变化的数据

字符串常量"hello"
字符常量’a’
整型常量10
浮点型常量3.14
宏定义常量#define PI 3.14

#define PI 3.14
定义关键字 宏常量名 宏值

定义关键字 宏常量名 宏值
屁股是没有分好;的哦

这种宏定义常量和普通常量的区别是啥呢?

宏:直接用原始值【推荐宏定义定义常量哦】
常量,把数值放入内存的

被该关键字修饰的变量是只读变量,那就是常量呗

const int a=10;
//被该关键字修饰的变量是只读变量,那就是常量呗

咱们最推荐的就是用宏定义常量哦

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>

//很多库后续调用各种函数都需要用的

//定义常量
#define PI 3.14

void f1(void)
{
	//圆的面积s=pi*r*r
	//圆的周长c=2*pi*r
	int r = 3;//变量半径
	float s = PI * r * r;//浮点数
	float c = 2 * PI  * r;//浮点数

	printf("r=3的圆面积:%f,周长为%f\n", s, c);
}

int main(void)
{
	f1();
	system("pause");
	return 0;
}

在这里插入图片描述
在这里插入图片描述
.kf
指定小数点后面保留k位

这好说

当预处理阶段时,代码会将宏常量替换哦
宏定义常量不能加;

否则它就这样替换了

//定义常量
#define PI 3.14;

void f1(void)
{
	//圆的面积s=pi*r*r
	//圆的周长c=2*pi*r
	int r = 3;//变量半径
	float s = 3.14; * r * r;//浮点数

这个3.14;替代pi之后
你后面的rr就废了
代码结束,不可哦

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>

//很多库后续调用各种函数都需要用的

//定义常量
#define PI 3.14

void f1(void)
{
	//圆的面积s=pi*r*r
	//圆的周长c=2*pi*r
	int r = 3;//变量半径
	const int d = 6;//常量,直径
	float s = PI * r * r;//浮点数
	double s2 = PI * d * d;//浮点数
	float c = 2 * PI  * r;//浮点数

	printf("r=3的圆面积:%.2f,周长为%.2f\n", s, c);
	printf("d=6的圆面积:%.2f\n", s2);
}

int main(void)
{
	f1();

	system("pause");
	return 0;
}

你还可以通过const int a = 10;
定义常量哦
在这里插入图片描述

变量,会变化的量,可以重新定义

把const去掉即可
会变化
easy
定义:
变量类型 变量名[=变量初始值];
变量类型 变量名;

变量三要素:
类型名
变量名
变量值

在这里插入图片描述

变量可以是不赋值
可以赋值
可以赋予表达式

变量的存储图很重要。

void f2(void)
{
	//变量
	int r = 3;//变量的值,可以是表达式
	float s = PI * r * r;//浮点数--也是有效变量

	
}

int main(void)
{
	f2();

	system("pause");
	return 0;
}

r可以开辟存储空间
名字就叫r
它的地址时ptr指向的

变量值,放在了r中,大小多大,就是看数据类型了,类型越大,空间越大
在这里插入图片描述
变量的声明
值是不给的

我们可以只声明,而不用

添加了关键字extern,变量定义,会开辟内存空间
变量申明不会开辟内存空间

在这里插入图片描述
只声明,是不会有内存空间的。

当编译器编译程序时,
在变量使用之前,如果没有定义,编译器会自动找一个变量声明,提升成为定义
在使用变量之前,你必须定义它的值
全局是0,局部是看操作系统,Windows不让你过,Linux给随机数。

如果使用前,有extern关键字,无法提升。
在使用之前,你编译器不要给我赋值

在这里插入图片描述
重新赋值;
变量你定义好了,重新修改变量值
好说
在这里插入图片描述
使用变量前,一定要定义哦
申明这种是会自动提升定义的
除非你家extern

在这里插入图片描述
在这里插入图片描述
建议:
定义变量,或申明变量时,尽量不要重名
在这里插入图片描述

标识符命名规则

一个变量啥的就是一种标识符
常量使用大写
变量小写
大小写严格区分哦
在这里插入图片描述

只能使用字母、数字、下划线_来命令,其他的字符不行哦,且数字不能开头哦

在这里插入图片描述
在这里插入图片描述

int c;
	c = PI;//替换

常量可以赋值给变量

使用变量后,输出即可
在这里插入图片描述
OK,标识符到此为止

在这里插入图片描述int类型,整型
在这里插入图片描述
short 类型 short a = 10;
long类型 long a = 10;
long long类型
都是整型
只是长度不同,范围不同
变量的空间大小有区别
在这里插入图片描述
如何查看这些类型的存储空间大小
在这里插入图片描述
它竟然不是函数,只是关键字而已
应该说看看你这个变量占用多少字节


void f4(void)
{
	int a = 10;
	short b = 10;
	long c = 10;
	long long d = 10;

	printf("int类型大小:%d\n", sizeof(int));
	printf("short类型大小:%d\n", sizeof(short));
	printf("long类型大小:%d\n", sizeof(long));
	printf("long long类型大小:%d\n", sizeof(long long));
}

int main(void)
{
	f4();

	system("pause");
	return 0;
}

在这里插入图片描述
short竟然比int还小2字节
int是4字节
long也是4字节
longlong俩int呗

这些需要记住哦


void f4(void)
{
	int a = 10;
	short b = 10;
	long c = 10;
	long long d = 10;

	printf("int类型大小:%d\n", sizeof(int));
	printf("int类型大小:%d\n", sizeof(a));
	printf("short类型大小:%d\n", sizeof(short));
	printf("short类型大小:%d\n", sizeof(b));
	printf("long类型大小:%d\n", sizeof(long));
	printf("long类型大小:%d\n", sizeof(c));
	printf("long long类型大小:%d\n", sizeof(long long));
	printf("long long类型大小:%d\n", sizeof(d));
}

int main(void)
{
	f4();

	system("pause");
	return 0;
}

在这里插入图片描述
所以sizeof既可以传类型本身
也可以传变量

都能玩

这些c++都是通用的

咱们看看常量宏定义,它的空间大小是多少


#define N 1024  //常量定义
void f5(void)
{
	int a = 10;//变量定义

	printf("a大小:%d\n", sizeof(a));
	printf("N类型大小:%d\n", sizeof(N));
}

int main(void)
{
	f5();

	system("pause");
	return 0;
}

在这里插入图片描述
常量是不申请内存的,直接用,它长度是4字节

标识符不可以用关键字哦
在这里插入图片描述
总结sizeof关键字
在这里插入图片描述

无符号整型unsigned

signed不写
unsigned要写是无符号

取值不看符号,二进制的开头1就不算了,那就扩大了一倍的表示范围
值的范围是大一丢丢

void f6(void)
{
	unsigned int a;
	a = -10;
	printf("a:%d\n",a);
	printf("a大小:%d\n", sizeof(a));
}

虽然可以这写,但是吧,就强行转了

在这里插入图片描述
大小是都不变的哦
跟你有符号无符号没关系
在这里插入图片描述
long为啥和int一样
早期long才是int
int那会才是2字节
后来int改为short了

int在Windows下面的32位系统和64位系统下,int都是4字节
而在Linux下面的32系统int是4字节,而Linux的64位系统int是8字节

懂?

在这里插入图片描述
打印的时候,格式匹配符号是,都从int衍生出来的
int用%d打印
short用%hd打印
long用%ld打印
long long用%lld打印

unsigned int用%u打印
unsigned short用%hu打印
unsigned long用%lu打印
unsigned long long用%llu打印
在这里插入图片描述
在这里插入图片描述
还有定义long类型数据的话
可以写为5l
5ll
这俩不常用的

void f6(void)
{
	unsigned int a=10;
	unsigned short b=11;
	unsigned long c = 12;
	unsigned long long d = 13;
	printf("a:%u\n",a);
	printf("b:%hu\n",b);
	printf("c:%lu\n",c);
	printf("d:%llu\n",d);
}

int main(void)
{
	f6();

	system("pause");
	return 0;
}

在这里插入图片描述
size_t是一种啥类型
typedef unsigned int size_t;
定义一个无符号整型
没有符号的整型

// Definitions of common types
#ifdef _WIN64
    typedef unsigned __int64 size_t;
    typedef __int64          ptrdiff_t;
    typedef __int64          intptr_t;
#else
    typedef unsigned int     size_t;
    typedef int              ptrdiff_t;
    typedef int              intptr_t;

如果是64位Windows系统,那走上面一路
32位Windows系统,走下面无符号int类型


void f6(void)
{
	unsigned int a=10;
	unsigned short b=11;
	unsigned long c = 12;
	unsigned long long d = 13;
	printf("a:%u\n",a);
	printf("b:%hu\n",b);
	printf("c:%lu\n",c);
	printf("d:%llu\n",d);

	size_t k = 10;//自定义的类型
	printf("d:%u\n", k);//无符号int哦

}

在这里插入图片描述
懂了吧用size_t的话,就要用%u匹配
在这里插入图片描述

字符类型,字符串类型

char
字符串类型:存储一个字符
''单引号引起来的叫字符

‘a’
‘B’
‘1’

格式匹配符%c
char的简称c
类型名变量名=变量值;


void f7(void)
{
	char ch = 'a';//ASCII码
	printf("字符ch:%c\n", ch);

	ch = 'm';
	printf("字符ch:%c\n", ch);

	ch = 97;//ASCII字符编码,它会打印字符
	printf("字符ch:%c\n", ch);
}

在这里插入图片描述
说明字符,实际上是一个ASCII码而已


void f7(void)
{
	char ch = 'a';//ASCII码
	printf("字符ch:%c\n", ch);
	printf("字符ch:%d\n", ch);

	ch = 'm';
	printf("字符ch:%c\n", ch);
	printf("字符ch:%d\n", ch);

	ch = 97;//ASCII字符编码,它会打印字符
	printf("字符ch:%c\n", ch);
	printf("字符ch:%d\n", ch);
}

在这里插入图片描述


void f7(void)
{
	char ch = 'A';//ASCII码
	printf("字符ch:%c\n", ch);
	printf("字符ch:%d\n", ch);

	ch = 'm';
	printf("字符ch:%c\n", ch);
	printf("字符ch:%d\n", ch);

	ch = 97;//ASCII字符编码,它会打印字符
	printf("字符ch:%c\n", ch);
	printf("字符ch:%d\n", ch);
}

在这里插入图片描述
A=65
Z=65+25=90
a=97
z=97+25=122


void f7(void)
{
	char ch = 'A';//ASCII码
	printf("字符ch:%c\n", ch);
	printf("字符ch:%d\n", ch);

    ch = 'Z';//ASCII码
	printf("字符ch:%c\n", ch);
	printf("字符ch:%d\n", ch);

	ch = 'a';
	printf("字符ch:%c\n", ch);
	printf("字符ch:%d\n", ch);

	ch = 'z';//ASCII字符编码,它会打印字符
	printf("字符ch:%c\n", ch);
	printf("字符ch:%d\n", ch);
}

在这里插入图片描述
在这里插入图片描述
我们可以把大写字母转化为小写
那就是大写的ASCII加32即可


void f7(void)
{
	char ch = 'A';//ASCII码
	printf("字符ch:%c\n", ch);
	printf("字符ch:%d\n", ch);

    ch = 'Z';//ASCII码
	printf("字符ch:%c\n", ch);
	printf("字符ch:%d\n", ch);

	ch = 'A'+32;
	printf("字符ch:%c\n", ch);
	printf("字符ch:%d\n", ch);

	ch = 'Z' + 32;//ASCII字符编码,它会打印字符
	printf("字符ch:%c\n", ch);
	printf("字符ch:%d\n", ch);
}

在这里插入图片描述
咋样,好说吧

字符’0’对应的ASCII码是48
在这里插入图片描述
如果你要打印\n出来
那你需要转义字符\

在这里插入图片描述
\0是数字0哦
而不是字符0

在这里插入图片描述

void f8(void)
{
	char c = '\n';
	printf("\\n:%c", c);
}

在这里插入图片描述

实数类型,浮点型

float和double不常用的

单精度浮点型float,精度低4字节
双精度浮点型,精度高8字节

void f9(void)
{
	float a = 3.14;
	double b = 3.14159;

	printf("a=%f\n", a);
	printf("b=%lf\n", b);

	printf("a大小=%d\n", sizeof(a));
	printf("b大小=%d\n", sizeof(b));
}

在这里插入图片描述
long float=double
默认float是保留6位小数点
需要限定小数保留几位就%.kf

void f9(void)
{
	float a = 3.14159;
	double b = 3.14159;

	printf("a=%.2f\n", a);
	printf("b=%.3lf\n", b);

	printf("a大小=%d\n", sizeof(a));
	printf("b大小=%d\n", sizeof(b));
}

在这里插入图片描述
它会四舍五入的

在这里插入图片描述

void f9(void)
{
	float a = 3.14159;
	double b = 3.14159;

	printf("a=%.2f\n", a);
	printf("b=%.3lf\n", b);

	printf("a大小=%d\n", sizeof(a));
	printf("b大小=%d\n", sizeof(b));

	a = 3.2e3f;//科学计数法,3.2×10的3次方即3200
	printf("a=%f\n", a);
	a = 3.2e-3f;//科学计数法,3.2×10的-3次方即0.0032
	printf("a=%f\n", a);
}

在这里插入图片描述


总结

提示:重要经验:

1)
2)学好c++,即使经济寒冬,手握10个大厂offer绝对不是问题!
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

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

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

相关文章

C++ Primer 第7章 类 - 上(零基础学习C++,精简学习笔记)

&#x1f916; 作者简介&#xff1a;努力的clz &#xff0c;一个努力编程的菜鸟 &#x1f423;&#x1f424;&#x1f425; &#x1f440; 文章专栏&#xff1a;C Primer 学习笔记 &#x1f4d4;专栏简介&#xff1a; 本专栏是博主学习 C Primer 的学习笔记&#xff0c;因为…

【NX2023/1847】UG软件安装详细指南教程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录安装包一、安装包内容检查二、安装步骤1.安装JAVA_WIN64.exe2.运行Launch.exe3.安装许可3.直接重启电脑&#xff08;小白直接重启稳妥&#xff09;4.重启后继续运行L…

网络威胁情报项目:为什么仍然很疯狂

大约五年前&#xff0c;向首席信息安全官&#xff08; CISO&#xff09;询问他们的网络威胁情报 (CTI) 计划时&#xff0c;得到了两种截然不同的回答。 资源丰富的大型企业正在投资他们的威胁情报计划&#xff0c;目的是为了战术、运营和战略目的更好地实施它。 规模较小、资…

Day942.独立编译调试 -系统重构实战

独立编译调试 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于独立编译调试的内容。 当组件做 独立的版本演进时&#xff0c;如果开发在本地每次修改代码时&#xff0c;都需要进行集成打包验证&#xff0c;反而会影响日常的开发效率。所以如果能够让组件独立进行编译…

Object方法

私人博客 许小墨のBlog —— 菜鸡博客直通车 系列文章完整版&#xff0c;配图更多&#xff0c;CSDN博文图片需要手动上传&#xff0c;因此文章配图较少&#xff0c;看不懂的可以去菜鸡博客参考一下配图&#xff01; 系列文章目录 前端系列文章——传送门 JavaScript系列文章—…

Node.js -- 模块化

1.模块化的基本概念 模块化是指解决一个复杂问题时&#xff0c;自顶向下逐层吧系统划分成若干模块的过程。对于整个系统来说&#xff0c;模块是可组合&#xff0c;分解和更换的单元。 将代码进行模块化拆分的好处&#xff1a; 提高代码的复用性提高代码的可维护性可以实现按…

元宇宙:新的数字模式——元宇宙会场

一、引言 元宇宙是一个充满无限可能的虚拟空间&#xff0c;人们可以在其中创建和参与各种虚拟场景和体验。元宇宙技术的兴起&#xff0c;为传统的会场提供了一个新的方向。元宇宙会场将线下会场的物理空间转化为虚拟空间&#xff0c;通过数字技术和互联网实现了人们在虚拟环境…

我的第一台电脑的故事

第一台电脑啊&#xff0c;多么遥远的故事了&#xff0c;又似乎就在眼前。今天重回往事&#xff0c;就简单记录一下吧。 &#x1f331;缘起 那是初一&#xff0c;至今已13年&#xff0c;遂觉遥远&#xff0c;而又是立志我学习的起点&#xff0c;至今还在校园&#xff0c;又觉就…

断开连接图的 BFS

在上一篇文章中,仅对特定顶点执行 BFS,即假设所有顶点都可以从起始顶点到达。但是在断开连接的图或所有顶点都无法访问的任何顶点的情况下,之前的实现将不会给出所需的输出,因此在这篇文章中,在 BFS 中进行了修改。 所有顶点都是可达的。因此,对于上图,简单的BFS就可以…

【消息队列】细说Kafka消费者位移机制

什么是位移 位移说白了就是消费者消费对应的Topic的分区的消费位置&#xff0c;之前存储到ZK中&#xff0c;后来转移到Kafka默认的Topic中。结构是采用keyvalue形势存储的&#xff0c;key是groupIdtopic分区号&#xff0c;value是offset的值。 而上述的存储就在_consumer_offse…

微信小程序02

小程序tabBar 普通页面跳转到 带有tabBar页面的时候不能使用 wx.navigateTo() 小程序中跳转到选项卡页面使用 wx.switchTab()跳转 到底部 onReachBottom() 函数 &#xff0c;&#xff0c; 在下拉刷新显示取消loading &#xff1a; wx.showNavigationBarLoading() wx.hideNavi…

深入讲解Linux内核中常用的数据结构和算法

Linux内核代码中广泛使用了数据结构和算法&#xff0c;其中最常用的两个是链表和红黑树。 链表 Linux内核代码大量使用了链表这种数据结构。链表是在解决数组不能动态扩展这个缺陷而产生的一种数据结构。链表所包含的元素可以动态创建并插入和删除。链表的每个元素都是离散存…

【网络原理】网络通信与协议

✨个人主页&#xff1a;bit me&#x1f447; ✨当前专栏&#xff1a;Java EE初阶&#x1f447; 目 录一. 网络发展史二. 网络通信基础1. IP地址2. 端口号3. 认识协议&#xff08;核心概念&#xff09;4. 五元组5. 协议分层6. 封装和分用一. 网络发展史 独立模式&#xff1a;计…

C++入门demo(从最简单的案例学习C++)

通过案例学习Cdemo01 在屏幕上输出内容demo02 规格不同的箱子&#xff08;变量&#xff09;demo03 物品存放&#xff08;变量赋值&#xff09;demo04 交换物品&#xff08;变量之间交换数值&#xff09;demo05 消失的重量&#xff08;隐式类型变换&#xff09;demo06 游泳池的容…

Melis4.0[D1s]:7.lvgl添加物理按键

文章目录1.lvgl注册keypad驱动1.1 在melis的ADC按键中发送消息1.1.1 创建消息队列&#xff0c;并初始化1.1.2 扫描按键时&#xff0c;发送按下和松开消息1.2 编写读取按键的回调函数1.3 lvgl按键驱动注册2.在gui中测试物理按键效果2.1 测试效果参考资料&#xff1a; 1.韦东山老…

第七章 基于 RNN 的生成文本

目录7.1 使用语言模型生成文本7.1.1 使用 RNN 生成文本的步骤7.1.2 文本生成的实现7.1.3 更好的文本生成7.2 seq2seq 模型7.2.1 seq2seq 的原理7.2.2 时序数据转换的简单尝试7.2.3 可变长度的时序数据7.2.4 加法数据集7.3 seq2seq 的实现7.3.1 Encoder类7.3.2 Decoder类7.3.3 S…

静态时序分析Static Timing Analysis3——特殊路径(多周期、半周期、伪路径)的时序检查

文章目录前言一、多周期路径1、建立时间检查2、保持时间检查二、半周期路径1、建立时间检查2、保持时间检查三、伪路径前言 2023.4.12 一、多周期路径 对于建立时间&#xff0c;要设置为N&#xff08;向后移&#xff09;&#xff1b;对于保持时间&#xff0c;要设置为N-1&…

9.8.0.32:ProEssentials数据可视化2D和3D图表:Crack

下面是我们的Winforms、Wpf、C MFC、VCL、ActiveX图表组件示例项目中的屏幕捕获。 有关下图&#xff0c;请参见我们的示例项目和演示中的030。 ProEssentials Winforms 图表, WPF 图表, C/MFC/VCL 图表. Gigasoft拥有20多年帮助企业开发大型客户端和嵌入式图表项目的经验。图…

JavaScript基础-02

常量&#xff08;字面量&#xff09;&#xff1a;数字和字符串 常量也称之为“字面量”&#xff0c;是固定值&#xff0c;不可改变。看见什么&#xff0c;它就是什么。 常量有下面这几种&#xff1a; 数字常量&#xff08;数值常量&#xff09;字符串常量布尔常量自定义常量…

传输线的物理基础(九):N 截面集总电路模型

理想的传输线电路元件是一种分布式元件&#xff0c;可以非常准确地预测实际互连的测量性能。下图显示了 1 英寸长传输线在频域中的实测阻抗和仿真阻抗对比。我们看到甚至高达 5 GHz 的测量带宽也能达成出色的协议。 1英寸长、50欧姆传输线的测量&#xff08;圆圈&#xff09;和…