C++研发笔记5——C语言程序设计初阶学习笔记3

        我们继续第二部分《初识C语言》的学习,上一篇笔记当中我们详细讲解了什么是C语言以及第一个C语言程序。本篇笔记中我们继续从数据类型开始学习,后面的内容还包括:数据类型 、变量与常量 、字符串+转义字符+注释 、选择语句 、循环语句 、函数 、数组 、操作符 、常见关键字 、define 定义常量和宏 、指针 、结构体。

第二部分  初识C语言

三、数据类型

/*
为什么要写代码?
答——写代码是为了解决生活中的问题
所以C语言必须要有能力来描述我们的生活
购物:网上商城——模拟现实生活中的购物(商品陈列、商品的价格、购物、结算)
当我们要描述清楚这些数据,需要非常明确的数据类型,不同的类型去描述不同的数据
*//*
那么C语言中的数据类型:
char —— 字符数据类型
short —— 短整型
int —— 整型
long —— 长整型
long long —— 更长的整型(C99中引用)
float —— 单精度浮点数
double —— 双精度浮点数
*///使用一段代码去验证每种类型的大小
#include<stdio.h>int main()
{printf("%d\n", 100); // %d 代表打印10进制的整数printf("hello\nworld");// \n 是一个转义字符,用来实现换行// sizeof 是一个操作符,用来计算内存空间的大小printf("%d\n", sizeof(char)); //实现打印输出char类型变量的空间大小printf("%d\n", sizeof(short)); //实现打印输出short类型变量的空间大小printf("%d\n", sizeof(int));  //实现打印输出int类型变量的空间大小printf("%d\n", sizeof(long)); //实现打印输出long类型变量的空间大小printf("%d\n", sizeof(long long)); //实现打印输出long long类型变量的空间大小printf("%d\n", sizeof(float)); //实现打印输出float类型变量的空间大小printf("%d\n", sizeof(double)); //实现打印输出double类型变量的空间大小return 0;
}
//以上打印的结果(1 2 4 4 8 4 8)的单位是字节,数据是存放到内存中的
//C语言规定sizeof(long) >= sizeof(int),不同编译器对sizeof(long)运行结果可能会出现不同
//理解不同变量占用的空间大小可以更合适的根据变量范围进行定义变量类型/*
计算机单位
比特 bit —— 计算机能识别的最小二进制指令(0或1)
字节 1 byte = 8bit
1 KB = 1024 byte
1 MB = 1024 KB
1 GB = 1024 MB 、TB 、PB ……
*//*
我们在VS 2022中运行上面的代码会出现C4477的警告
“printf”: 格式字符串“%d”需要类型“int”的参数,但可变参数 1 拥有了类型“size_t”
因为VS 2022这款编译器的原因,我们最好将 %d 改为 %zd,这样运行起来,警告就会取消了
*/#include<stdio.h>int main()
{printf("%zd\n", sizeof(char));printf("%zd\n", sizeof(short));printf("%zd\n", sizeof(int));printf("%zd\n", sizeof(long));printf("%zd\n", sizeof(long long));printf("%zd\n", sizeof(float));printf("%zd\n", sizeof(double));return 0;
}//注意这整段代码直接从运行是会报错的,这是因为为了方便演示我使用了两个main函数
//如果我们要观察运行结果的话,将其中一段进行注释即可
//总体而言,存在这么多的类型,其实是为了更加丰富的表达生活中的各种值。
//这些值我们在编程语言中使用变量来表现。/*
创建变量的具体方法:
数据类型 变量名称 = 初始化的值;
具体的使用方法及示例我们会在下一个目题中详细的介绍
下面我简单写出几个例子
*/
char ch = 'a';
int a = 10;
long b = 100;
double c = 3.14;
float weight = 75.5f; //如果结尾不加f,系统会默认为double类型

 四、变量与常量

(一)、变量的创建与命名
/*
生活中的有些值是不变的,比如说圆周率、性别、身份证号等
也有些值是可变的,比如说年龄、体重、薪资等
C语言规定,不变的值称为常量,变的值称为变量。
*//*
· 定义变量函数的方法:
变量类型 变量名称 = 初始化的值;
我们对变量命名的时候,最好也要使用一些有意义的名称
我们创建变量的时候,一定要初始化,否则有一些编译器会报错。
· 当我们使用printf打印变量的时候:
&d 用来打印int类型
%f 用来打印float类型
&lf 用来打印double类型
*//*
关于变量的命名:
1、只能由字母(包括大写和小写)、数字和下划线( _ )组成。
2、不能以数字开头。
3、长度不能超过63个字符。
4、变量名中区分大小写的。
5、变量名不能使用关键字。
*/#include<stdio.h>int main()
{//存放一个人的年龄10岁int age = 10;printf("%d\n", age);//存放一个人的薪资是5000float salary = 5000.0f;printf("%f\n", salary);//如果想限制小数点后位数,可以如下表示/*语法规定 %.xf 或者 %.xlf 中的 x 可以规定小数点后保留几位小数如果不做设置,则默认小数点后保留六位小数*/printf("%.2f\n", salary);//也可以使用double去定义浮点数,数据结尾就无需f了double money = 5000.0;printf("%.2lf\n", money);printf("%.8lf\n", money);char ch = 'w';  //定义一个字符类型int a = 0;  //定义一个整型并进行初始化a = 10;  //修改这个整型的值printf("%d\n", a);// 打印的值为10,实现了变量值的修改return 0;
}
(二)、变量的分类及基础使用
#define _CRT_SECURE_NO_WARNINGS//变量分为局部变量和全局变量#include<stdio.h>int num1 = 1000; // 全局变量
int num = 10; //全局变量int main()
{int num2 = 1; // 局部变量int num = 0; // 和全局变量名字一样的局部变量printf("num1 = %d\n", num1);//打印一个全局变量printf("num2 = %d\n", num2);//打印一个局部变量//当全局变量和局部变量名称相同的时候,打印局部变量优先//当然当我们定义变量的时候,建议不要全局变量和局部变量冲突printf("num = %d\n", num);return 0;
}//变量的简单使用——实现实现两个整数的相加#include<stdio.h>int main()
{int num1 = 0; //定义第一个变量int num2 = 0; //定义第二个变量//用户输入数据printf("请输入两个数字,请用回车或空格分割:\n");scanf("%d %d", &num1, &num2);//进行计算int sum = 0; //初始化为0sum = num1 + num2;//打印计算结果printf("%d + %d = %d", num1, num2, sum);return 0;
}/*
上面这段代码如果在VS2022上第一次编译,是会出现C4996的报错的
'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. 
这是因为VS编译器认为scanf这个函数是不安全的,建议使用scanf_s来替换
但是scanf_s仅仅是在VS中使用的,也就是不可以跨平台使用,因此我们依旧建议使用scanf函数
具体操作方法为在整个项目的第一行加上
#define  _CRT_SECURE_NO_WARNING
VS中不仅只是scanf函数出现这个报错,所以我们在所有源文件的第一行都加入这个预处理便可以有效的在以后得编程中避免 C4996 的报错的
具体操作方法如下:
1、使用everything工具搜素 newc++file.cpp ,右击鼠标——打开路径
2、将该文件复制到桌面上,然后便可以正常修改,在其内容的第一行写入 #define  _CRT_SECURE_NO_WARNING
3、再将修改好的文件拷贝会原路径下即可
这样以后创建的文件中都会默认有这句预处理了
*/

        变量与常量的内容并没有结束,考虑到篇幅原因,我们本篇笔记暂时结束到这里,关于变量的作用域和生命周期以及关于常量的内容我们会在下一篇笔记中再详细讲出,同时会往下进行关于字符串+转义字符+注释的学习。

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

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

相关文章

linux 修改主机名和用户名颜色

编译 ~/.bashrc vim ~/.bashrc 如下格式 PS1\[\e[1;31m\]\h:\[\e[0;32m\]\w \[\e[1;34m\]\u\[\e[0m\]\$ PS1${debian_chroot:($debian_chroot)}\[\033[01;31m\]\u\[\033[01;33m\]\[\033[01;36m\]\h \[\033[01;33m\]\w \[\033[01;35m\]\$ \[\033[00m\] if [ -e /lib/terminfo…

QT中中文显示乱码问题

在VS2013中用QT开发GUI应用程序&#xff0c;Qt中显示中文乱码 一&#xff1a; //解决QT中中文显示乱码问题 #pragma execution_character_set("utf-8") 二&#xff1a;在main函数中添加以下代码&#xff1a; #include <QTextCodec>void main() {QTextCod…

MySQL中的增查操作:探索数据的奥秘,开启数据之门

本节&#xff0c;我们继续深入了解MySQL&#xff0c;本章所讲的基础操作&#xff0c;针对的是表的增删查改&#xff01; 一、Create 新增 1.1、语法 INSERT [INTO] table_name[(column [, column] ...)] VALUES(value_list) [, (value_list)] ... value_list: value, [, va…

离线安装bitnami-gitlab8.8.4+汉化

注意&#xff1a; 常规安装gitlab需要联网&#xff0c;而按装bitnami-gitlab无需联网(bitnami-gitlab用于内网环境无法联网时安装gitlab&#xff0c;两者是一个东西只是名字不一样)bitnami-gitlab-8.8.4版本可以汉化成功新用户注册账户无需激活也可以直接登录&#xff0c;因为…

探究互联网数字化商品管理变革:从数据化到精准运营的路径转型

在当前的互联网经济背景下&#xff0c;商品管理已经进入了一个高度数字化的新时代。随着大数据、云计算、人工智能等技术的迅猛发展&#xff0c;传统的商品管理模式正在经历一场深刻的变革。企业不再仅仅依赖信息化系统来进行数据存储和管理&#xff0c;而是通过更加智能、精准…

Ubuntu 上所有正在监听的端口

要查看 Ubuntu 上所有正在监听的端口&#xff0c;可以使用以下命令&#xff1a; 使用 ss 命令 ss 是一个常用的工具&#xff0c;可以查看网络套接字的状态&#xff0c;包括正在监听的端口。 bash 复制 ss -tuln -t&#xff1a;显示 TCP 套接字。 -u&#xff1a;显示 UDP 套接…

200元运动蓝牙耳机有哪些?爆款测评PK力荐!

在运动场景下&#xff0c;传统的入耳式和半入耳式耳机虽然占据了大部分市场&#xff0c;但并不适合所有人&#xff0c;尤其是在长时间运动中佩戴时&#xff0c;耳道的压迫感往往会导致不适。而骨传导耳机虽然通过不塞入耳道的方式改善了佩戴舒适度&#xff0c;但在音质方面与入…

git-合并连续两次提交(一个功能,备注相同)

前言&#xff1a; 场景是这样&#xff0c;由于我是实现一个功能&#xff0c;先进行了一次commit,然后我发现写的有些小问题&#xff0c;优化了一下功能并且把代码优化了一次&#xff0c;于是又提交了一次。两次的提交都是以相同的备注&#xff08;当然这个无所谓&#xff09;&a…

keras的内部的模块有哪些? (自用便签)

AI回答, 什么时候忘了回来看看

OpenCV高级图形用户界面(11)检查是否有键盘事件发生而不阻塞当前线程函数pollKey()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 轮询已按下的键。 函数 pollKey 无等待地轮询键盘事件。它返回已按下的键的代码或如果没有键自上次调用以来被按下则返回 -1。若要等待按键被按…

Transformer 与 CNN的对比

Transformer 相比于 CNN 的优点主要体现在以下几个方面: Transformer 相比 CNN 的优点: 全局依赖建模能力:Transformer 的核心机制是 自注意力机制,它可以直接建模输入序列中任意两个位置之间的依赖关系,无论它们之间的距离有多远。 相比之下,CNN 更擅长处理局部信息,它…

如何在分布式环境中实现高可靠性分布式锁

目录 一、简单了解分布式锁 &#xff08;一&#xff09;分布式锁&#xff1a;应对分布式环境的同步挑战 &#xff08;二&#xff09;分布式锁的实现方式 &#xff08;三&#xff09;分布式锁的使用场景 &#xff08;四&#xff09;分布式锁需满足的特点 二、Redis 实现分…

IP不纯净的后果及解决方案

在如今的互联网时代&#xff0c;知识产权&#xff08;IP&#xff09;保护显得尤为重要。随着社交媒体的迅猛发展&#xff0c;尤其是以TikTok为代表的短视频平台的崛起&#xff0c;内容创作者面临着越来越多的挑战&#xff0c;其中之一便是IP不纯净的问题。本文将探讨做IP不纯净…

12、论文阅读:利用生成对抗网络实现无监督深度图像增强

Towards Unsupervised Deep Image Enhancement With Generative Adversarial Network 摘要介绍相关工作传统图像增强基于学习的图像增强 论文中提出的方法动机和目标网络架构损失函数1) 质量损失2) 保真损失3&#xff09;身份损失4&#xff09;Total Loss 实验数据集实现细节评…

redis 使用

打开redis 前台启动 同路径下打开redis-server 出现窗口&#xff0c;即启动成功 此时关闭窗口&#xff0c;redis关闭&#xff1b; 不管有没有使用密码&#xff0c;或者使用了什么密码&#xff0c;都能连上 如果使用下文提到的redis cli增加密码&#xff0c;就只能使用你设置的…

【机器学习】任务七:聚类算法 (K-means 算法、层次聚类、密度聚类对鸢尾花(Iris)数据进行聚类)

目录 1.基础知识 1.1 K-Means 算法 1.2 层次聚类&#xff08;Hierarchical Clustering&#xff09; 1.3 密度聚类&#xff08;DBSCAN&#xff09; 1.4 距离和相似度度量方法 1.5 总结&#xff1a; 2.K-means 算法对鸢尾花&#xff08;Iris&#xff09;数据进行聚类 2.1…

手写 | 设计模式

这里写目录标题 观察者 vs 发布订阅 观察者 vs 发布订阅 参考代码 观察者模式&#xff0c;一对多&#xff0c;两个角色&#xff1a;观察者observer和被观察者/主题Subject。 Subject维护一个数组&#xff0c;记录有哪些Observer&#xff1b;通过调自身的noticefy方法&#xf…

Linux - 环境变量 | 命令行参数 | 进程基础

文章目录 一、了解冯诺依曼体系结构1、概念2、对数据层面3、实例二、操作系统1、概念2、设计OS的目的3、定位4、操作系统怎么管理&#xff1f; 三、进程1、概念2、怎么管理进程3、描述进程-PCB4、描述进程怎么运行&#xff08;粗略&#xff09;5、进程属性6、创建子进程7、创建…

mac 安装最新版nginx

1. clone最新版本源代码&#xff1a; git clone https://github.com/nginx/nginx.git 2. 下载PCRE 没有PCRE那我们就下&#xff0c;下载地址&#xff1a;https://sourceforge.net/projects/pcre/files/pcre/&#xff0c;笔者下载的pcre-8.45.zip&#xff0c;下载之后解压到ngi…

实战RAG第一天——llama_index向量索引,查询引擎,搜索知识库问答,全部代码,保姆级教学

一、llama_index简介 llama_index(以前称为 GPT Index)是一个用于构建、查询、索引大型文档和数据集的开源框架。它的核心功能是帮助开发者将大语言模型(LLM)与自己的数据集无缝集成,从而进行知识库的构建、查询等任务。llama_index 使用 Python 编写,并结合了多种大语言…