关于C语言的一些笔记
文章目录
- May4,2023
- 常量问题
- 基本数据类型
- 补码
- printf的字符格式控制
- 关于异或、异或的理解
- 赋值运算
- ++i和i++的区别
- 关系运算符
- May5,2023
- 逻辑运算中‘非’的理解
- 逗号运算
- 运算符的优先级问题
- 三目运算
摘自加工于C技能树
May4,2023
常量问题
//定义常量
const float PI;
PI = 3.14;
//false ,这种声明变量是错误的,常量声明之后就不能修改,即不能再赋值,所以应该声明之处就赋值。
//正确的方法为下面两种
const float PI = 3.14;
#define PI 3.14
printf("半径为%.2f的圆,面积是%.2f", radius, area);
//%.2f,表示精确,保留小数后2位数。//关于科学记数法
314e-2:这个e和后面的-2是一个整体,e可以理解为*10^,与-2连起来就是*10^-2。所以314e-2就是314*10^-2=3.14。
基本数据类型
signed:代表有符号的,第一个位代表正负,剩余的代表大小,例如:signed int 大小区间为-128-127。(默认为signed)unsigned:代表无符号的,所有的位都为大小,没有负数,例如:unsigned int 大小区间为:0-255。
补码
正数的补码是该数的二进制形式。
负数的补码需要通过以下几步获得:
(1)先取得该数的绝对值的二进制形式
(2)再将第1步的值按位取反(除符号位)
(3)最后将第2步的值加1

printf的字符格式控制
printf函数的格式控制 说明符:
%d:有符号十进制整数
%u:无符号十进制整数
%i:与%d相同
%o:无符号八进制整数(不输出前缀0)
%x:无符号十六进制整数(不输出前缀0)
%c:输出一个字符
%s:输出一个字符串
%f:浮点数,十进制小数形式,默认保留6位小数
%e:浮点数,e指数形式,小数点前有且仅有一位非零数,指数部分一般占4位
%g:根据值,自动选择%f或%e,不输出无意义的0
%p:输出指针(地址)
%%:输出一个 %
('a' <= ch <= 'z')‖('A’<=ch<='Z') (ch >= 'a' && ch <= 'z')‖(ch >= 'A' && ch<='Z')//前面表达是数学式的表达,因为C语言中没有 连等于 这样的表达,所以要用后面这种符合C语言表达的。scanf("%c",&ch)什么意思?
scanf()读变量的时候需要其实际存储的地址。%c是字符型,把输入的数字按照ASCII码相应转换为对应的字符。字符型取地址要加&。字符串数组或字符串指针变量,由于数组名可以转换为数组和指针变量名本身就是地址,就不加&
关于异或、异或的理解
异或:男性和女性能生出孩子,否则就不行。
同或:同性之间才是真爱
来源于知友



赋值运算
int a=b=c=10
连续赋值应保证等号左边为变量,右边为赋值,并且变量已经有了存储空间;
此时bc相当于没有定义就使用了,会报错;应先定义,赋予存储空间,改为
int a,b,c;
a=b=c=10int main(int argc, char** argv),char** argv这句啥意思???
argc是传入main的参数个数,argv是传入main的函数列表,char**二级指针去指向它
++i和i++的区别

关系运算符

注意:C语言的基本数据类型有char、int、double,我们暂时认为只有char和int适用于上述关系运算符,double和字符串(字符数组)的关系运算以后再讨论。
注意:C语言没有“之间”、“中间”、“之内”或“在某范围内”的关系运算符,例如年龄在25-30岁之间,只能表达为:年龄大于等于25岁
并且 年龄小于等于30岁。
May5,2023
逻辑运算中‘非’的理解
year % 100 != 0 和 !(year % 100 == 0)两者的区别是什么?
逗号运算
引言,这是我最兴奋的一章,看了大佬文章,就像是哥伦布发现新大陆那样,感觉很新奇。但我这里只写我感觉到的,并远没有大佬那种深层次看问题的角度,也得不出来那样的结论,但他们就是我的师傅,我的目标,是我想要成为的那种人。
``Q:请教一下,这个y=(x=a+b),(b+c);语法是那个版本的支持的语法,我用得编译器始终报错,我想了了一下这个语句本质上归咎为y=7,9了,但这不符合我目前对C语言的认知,想着是不是这种定义出错了呢?
A:来自于大佬黛琳ghz的解答这种语法形式是 C 语言中的逗号表达式,用于在一个语句中包含多个表达式。在该语法中,逗号左边的表达式会被执行,但其结果会被忽略,然后逗号右边的表达式会被求值并赋值给 y。
C 语言中,逗号表达式的优先级是最低的,也就是说,它是所有运算符中优先级最低的。因此,在使用逗号表达式时要格外注意其优先级问题。
语句 y=(x=a+b),(b+c); 实际上是将 (x=a+b) 的结果赋值给 y,然后对 (b+c) 进行求值,但该结果却被忽略了。所以,实际上该语句的效果等同于 y = (x = a + b);。
关于编译器报错的问题,由于不同的编译器可能存在语法实现细节的差异,建议检查一下使用的编译器是否支持该语法。
测试前:
#include <stdio.h>
int main(int argc, char **argv)
{int a=3, b=4, c=5;int x=0;int y=(x=(a+b)),(b+c);printf("第一个y=%d\n", y);y=((x=a+b),(b+c));printf("第二个y=%d\n", y);}//运行结果
/*
.code.tio.c:6:23: error: expected ')'int y=(x=(a+b)),(b+c);^
.code.tio.c:6:21: note: to match this '('int y=(x=(a+b)),(b+c);^
.code.tio.c:6:22: error: redefinition of 'b'int y=(x=(a+b)),(b+c);^
.code.tio.c:4:11: note: previous definition is hereint a=3, b=4, c=5;^
2 errors generated.
/srv/wrappers/c-clang: line 5: ./.bin.tio: No such file or directory
*/
对于以上错误查询未果,于是阴差阳错下,把y提前声明了一下就好。
#include <stdio.h>
int main(int argc, char **argv)
{int a=3, b=4, c=5,x=0,y;y=(x=(a+b)),(b+c);printf("第一个y=%d\n", y);y=((x=a+b),(b+c));printf("第二个y=%d\n", y);}//运行结果
/*
第一个y=7
第二个y=9
.code.tio.c:5:19: warning: expression result unused [-Wunused-value]y=(x=(a+b)),(b+c);~^~
1 warning generated.
*/
总结:
#include <stdio.h>
int main(int argc, char **argv) {int a=1,b=2,c=3,d=4;int x,y;x = a,b,c,d;//不带括号的 ,数据类型 变量名 = 表达式1,表达式2,表达式3,表达式4;y = (a,b,c,d);//带括号的 ,数据类型 变量名 = (表达式1,表达式2,表达式3,表达式4);printf("x:%d\n",x);printf("y:%d\n",y);
}//运行结果:
1
4/*
注解:逗号运算符有两种方式。
第一种是不添加括号的,这种只会执行第一个表达式1,而忽略其他表达式的结果,并且返回第一个表达式的值或者说计算机可能把所有的表达式都执行了,但是呈现给你的是第一个表达式的值;
第二种是带括号的,这种执行了前面的表达式(即表达式1,表达式2,表达式3),但是忽略了他们的结果,只返回最后一个表达式(即表达式4)的值。
*/

运算符的优先级问题

三目运算
比较三个数中的大小




B选项有点看不懂。
相关文章:
关于C语言的一些笔记
文章目录 May4,2023常量问题基本数据类型补码printf的字符格式控制关于异或、异或的理解赋值运算i和i的区别关系运算符 May5,2023逻辑运算中‘非’的理解逗号运算运算符的优先级问题三目运算 摘自加工于C技能树 May4,2023 常量问题 //定义常量 const float PI; PI…...
【Python入门知识】NumPy数组迭代及连接
前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 数组迭代 迭代意味着逐一遍历元素,当我们在 numpy 中处理多维数组时, 可以使用 python 的基本 for 循环来完成此操作。 如果我们对 1-D 数组进行迭代,它将逐一遍历每个元素。 实例 迭…...
我们公司的面试,有点不一样!
我们公司的面试,有点不一样! 朋友们周末愉快,我是鱼皮。因为我很屑,所以大家也可以叫我屑老板。 自从我发了自己创业的文章和视频后,收到了很多小伙伴们的祝福,真心非常感谢! 不得不说&#…...
C++之初识STL—vector
文章目录 STL基本概念使用STL的好处容器vector1.vector容器简介2.vector对象的默认构造函数3.vector对象的带参构造函数4.vector的赋值5.vector的大小6.vector容器的访问方式7.vector的插入 STL基本概念 STL(Standard Template Library,标准模板库)STL 从广义上分为: 容器(con…...
资讯汇总230503
230503 12:21 【放松身心亲近自然 自驾露营成旅游新风尚】今年“五一”假期,我国旅游业的快速恢复催生自驾露营休闲游、短途游、夜游等新型旅游产品提质升级。快速发展的新兴旅游业态,在促进旅游消费、培育绿色健康生活方式等方面发挥了积极作用…...
C++之编程规范
目录 谷歌C风格指南:https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/contents/ 编码规则: • 开闭原则:软件对扩展是开放的,对修改是关闭的 • 防御式编程:简单的说就是程序不能崩溃 •…...
ChatGPT做PPT方案,10组提示词方案!
今天我们要搞定的PPT内容是: 活动类型:节日活动、会员活动、新品活动分析类型:用户分析、新品立项、项目汇报内容类型:内容规划、品牌策划 用到的工具: mindshow 邀请码 6509097ChatGPT传送门(免费使用…...
分布式夺命12连问
分布式理论 1. 说说CAP原则? CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)这3个基本…...
sourceTree离线环境部署
目录 1、下载sourceTree安装包,打开之后弹出注册界面(需要去国外网站注册)2、使用技术手段跳过注册步骤3、打开安装包进行安装 注:建议提前安装好git 1、下载sourceTree安装包,打开之后弹出注册界面(需要去…...
6.1.1 图:基本概念
一,基本概念 1.基本定义 (1)图的定义 顶点集不可以是空集,但边集可以是空集。 (2) 有向图的表示: 圆括号 无向图的表示: 尖括号 简单图、多重图: 简单图:…...
SlickEdit for Windows and Linux crack
SlickEdit for Windows and Linux crack 现在可以在“新建注释”对话框中对颜色进行排序,使调色板中的颜色阵列看起来更符合逻辑。 在拆分或扩展行注释时添加了撤消步骤,这样您只需点击“撤消”一次即可撤消行注释扩展。 已更新VHDL颜色编码,…...
ChatGPT实现stackoverflow 解释
stackoverflow 解释 ChatGPT 公开服务以来,程序员们无疑是最早深入体验和"测试"的一批人。出色的效果也引发了一系列知识产权上的争议。著名的 stackoverflow 网站,就宣布禁止用户使用 ChatGPT 生成的内容来回答问题,一经发现&…...
第五章 作业(123)【编译原理】
第五章 作业【编译原理】 前言推荐第五章 作业123 随堂练习课前热身04-17随堂练习04-17课前热身04-24 最后 前言 2023-5-3 22:12:46 以下内容源自《【编译原理】》 仅供学习交流使用 推荐 第四章 作业(123)【编译原理】 第五章 作业 1 1.令文法G为…...
基于Vue的个性化网络学习笔记系统
1.系统登录:系统登录是用户访问系统的路口,设计了系统登录界面,包括用户名、密码和验证码,然后对登录进来的用户判断身份信息,判断是管理员用户还是普通用户。 2.系统用户管理:不管是…...
如何搭建一个HTTP实验环境
这一讲是“破冰篇”的最后一讲,我会先简单地回顾一下之前的内容,然后在 Windows 系统上实际操作,用几个应用软件搭建出一个“最小化”的 HTTP 实验环境,方便后续的“基础篇”“进阶篇”“安全篇”的学习。 “破冰篇”回顾 HTTP …...
Electron 环境搭建
https://start.spring.io/ 在线数据分析网站 https://tj.aldwx.com/ https://www.spsspro.com/ win10如何分屏 拖到边缘 Electron 环境搭建 https://www.electronjs.org/zh/docs/latest/tutorial/%E6%89%93%E5%8C%85%E6%95%99%E7%A8%8B electron 隐藏菜单 electron 标题栏 设…...
农机电招平台~java
摘要 随着农机电招行业的不断发展,农机电招在现实生活中的使用和普及,农机电招行业成为近年内出现的一个新行业,并且能够成为大群众广为认可和接受的行为和选择。设计农机电招平台的目的就是借助计算机让复杂的销售操作变简单,变…...
springboot+vue体质测试数据分析及可视化设计(源码+文档)
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的体质测试数据分析及可视化设计。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者&a…...
thinkphp+vue+html高校固定资产管理系统维修 租借4h80u
本高校资产管理系统采用的数据库是Mysql,使用thinkphp框架开发。在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。运行环境:phpstudy/wamp/xammp等 开发语言:php 后端框…...
【学习笔记】「北大集训 2021」经典游戏
我觉得很厉害。要是考场上能把这道题切了的话数据结构的水平肯定是不低的。 考虑简化版问题:如果只询问一个点的答案怎么做。 注意,我这么做是有风险的。我把战线拉长了。不过当然,如果连简化版的问题都做不了,那何谈正解&#…...
告别Widgets?用QtQuick和QML为你的桌面应用注入现代感(附完整Demo)
从Qt Widgets到QtQuick:打造现代桌面应用的实战指南 在桌面应用开发领域,Qt框架一直以其跨平台能力和稳定性著称。然而,随着用户对界面体验要求的提升,传统的Widgets方式逐渐显露出局限性——动画生硬、响应迟钝、与现代操作系统风…...
做客户管理之前,先看看这 6 个教训
方案 A:传统开发方式分析 传统开发需要组建专业团队,包括产品经理、UI 设计师、前后端开发、测试工程师等。中等规模项目团队 5-8 人,开发周期 3-6 个月,人力成本 30-100 万。开发过程中需求沟通成本高,业务人员用自然…...
CI/CD 流水线性能优化:从构建到部署
CI/CD 流水线性能优化:从构建到部署 前言 哥们,别整那些花里胡哨的理论。今天直接上硬菜——我在大厂一线优化 CI/CD 流水线性能的真实经验总结。作为一个白天写前端、晚上打鼓的硬核工程师,我对效率的追求就像对鼓点节奏的把控一样严格。 背…...
1756-L55处理器单元
1756-L55 处理器单元(ControlLogix 系列PLC CPU)一、主要特点高性能处理器,适合中大型控制系统支持多任务运行与快速扫描支持在线编程与程序修改模块化结构,扩展灵活支持本地及远程I/O控制可实现冗余系统,提高可靠性支…...
【超全】基于Springboot多维分类的知识管理系统【包括源码+文档+调试】
💕💕发布人: 码上青云 💕💕各类成品Java毕设 。javaweb,ssm,springboot等项目,欢迎咨询。 💕💕程序开发、技术解答、代码讲解、文档, ἱ…...
终极指南:深入解析Material Library架构与模块依赖关系
终极指南:深入解析Material Library架构与模块依赖关系 【免费下载链接】material A library to bring fully animated Material Design components to pre-Lolipop Android. 项目地址: https://gitcode.com/gh_mirrors/mate/material Material Library是一…...
密码安全必修课:为什么BCrypt比MD5更适合存储用户密码?
密码安全必修课:为什么BCrypt比MD5更适合存储用户密码? 在数字身份成为第二张身份证的时代,密码安全早已不是技术圈的内部话题。去年某社交平台600万用户数据泄露事件中,令人震惊的不是数据被盗本身,而是其中87%的密码…...
PCB Layout实战:信号走线绕过ESD/TVS管,为何防护会失效?
1. 信号走线绕过ESD/TVS管的隐患 很多工程师在PCB设计时都听过一个原则:信号走线要先经过ESD/TVS保护器件,再连接到被保护芯片。但在实际项目中,由于空间限制或布线困难,经常会出现信号线先连接到芯片,再绕回保护器件的…...
哔哩下载姬DownKyi:新手快速上手指南与实战技巧
哔哩下载姬DownKyi:新手快速上手指南与实战技巧 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等)…...
新手必看!Quartus II 10.0 + DE2-115开发板从安装到点亮LED的完整避坑指南
Quartus II 10.0 DE2-115开发板从安装到点亮LED的完整避坑指南 第一次接触FPGA开发时,我盯着DE2-115开发板上密密麻麻的接口和Quartus II复杂的界面,完全不知道从何下手。直到经历了无数次驱动安装失败、管脚分配错误和编译报错后,才终于让第…...
