2. C语言核心语法 - 实践

news/2026/1/20 19:41:51/文章来源:https://www.cnblogs.com/tlnshuju/p/19508612

2. C语言核心语法 - 实践

2026-01-20 19:35  tlnshuju  阅读(0)  评论(0)    收藏  举报

1. 注释

什么是注释?

注释是在源代码中添加说明信息,它是写给程序员看的说明文字,编译器会完全忽略注释内容,不参与编译。

主要作用: 增加代码的可阅读性

C语言的两种注释方式

  1. 单行注释
  • 语法:以//开头,后面写上注释内容
  • 特点:只能注释一行内容
  • 适用场景:简短说明、行尾注释
// 我是单行注释
  1. 多行注释
  • 语法:以/*开头,以*/结束,中间写上注释内容
  • 特点:可以跨越多行
  • 适用场景:函数说明、大段文字描述、临时禁用代码块
/*
我是多行注释
这是第二行
这是第三行
*/

用于代码中如下:

// 预处理
#include <stdio.h>// 程序入口int main(void){// 输出文本printf("hello world!");/*程序的结果0为正常停止非0为异常停止*/return 0;}

快捷键

关于注释的快捷键是组合快捷键,单行注释,把鼠标定位到注释那一行(即点一下那一行,有个输入的竖杆,一闪一闪的);多行注释要选中需要注释的内容再操作快捷点。

  1. 注释快捷键: Ctrl-K + Ctrl-C
  2. 取消注释快捷键:Ctrl-K + Ctrl-U

注:写注释就像给别人(包括未来的自己)写使用说明书。好的注释应该解释"为什么这样做",而不是重复"代码在做什么"。

2. 关键字

关键字就是C语言中被赋予特定含义的单词

特点:

  1. 关键字都是小写的,例如int不能写成Int或INT。
  2. 不能将关键字用作变量名、函数名等标识符。(这个后面再说明)
  3. 编辑器会把关键字用不同的颜色标出来。
#include <stdio.h>// int 关键字:表示整数,main函数的返回类型为整数int main(){printf("hello world!");// return 关键字:函数返回一个值return 0;}

C语言的关键字有30多个,我们不必死记硬背,学到后面都会接触到,慢慢掌握。

3. 常量

什么是常量?

定义:C语言中的常量是指在程序运行过程中其值不会改变的量。
特点:一旦定义,值就固定不变

常量的类型

  1. 整型常量:正数,负数,0;(如:1920
  2. 实型常量(浮点型常量):
    • 小数形式,所有带小数点的数字;(如:0.3318.6
    • 指数形式,(如:1.23e-21.23e3
  3. 字符常量:用单引号括起来字母、数字、英文符号。注:字符常量只能是一个字符。转义字符也是字符常量,例如'\n'(换行)、'\t'(制表符)
  4. 字符串常量:用双引号括起来的一串字符,例如 "Hello, world!"。字符串常量在内存中以空字符’\0’结尾。

注:

  1. 实型常量小数点前后为 0,可以省略

    • .03 等同于 0.93
    • 18. 等同于 18.0
  2. 指数形式(科学计数法)

    • 整型常量 1230 用科学计数法1.23e3表达时就会变成实型常量。
    • 因为 科学计数法 是一个计算过程,要经过计算才能得出他的值是 1230
  3. "123"123哪个可以用来计算

  • 答案是123
  • 第一个是字符串常量,它有双引号,不可用于计算
  • 第二个是整型常量,表示数字类型,才能用于计算

输出常量

我们已经知道了上面的四种常量类型,但我想把他打印出来,能直接输入吗,如图
在这里插入图片描述
答案是不能,会报错,为什么说“printf”: 形参和实参 1 的类型不同”

因为 printf()函数 它的参数格式是这样的:printf("格式字符串", 参数X, 参数Y, ...);

  • 格式字符串:说明我们第一个参数只能是字符串类型,那么我们想要打印别的常量类型应该怎么办呢?

  • 我们可以使用格式字符串中的格式说明符来指定参数的类型和输出的格式。

  • 什么是格式说明符
    格式说明符是格式字符串中以%开头的特殊标记

格式说明符写法单词
整型%ddecimal
实型%ffloating-point
字符%ccharacter
字符串%sstring
  • 格式说明符可以干嘛
    它们告诉printf:
    • “这里要插入一个值”
    • “这个值应该按照什么类型和格式来显示”
// 格式字符串中的 %d 就是一个格式说明符,在这里起到一个占位的作用
// 它说:"这里要插入一个整数"
// 25 就是插入进去的值
printf("我的年龄是:%d 岁", 25) // 输出:我的年龄是:25 岁

总结一下,为什么要写%d?

  1. 固定规则:printf()函数的第一个参数必须是一个格式字符串。这个字符串定义了最终的输出样式和内容类型,它本身是固定不变的。
  2. 占位与声明:为了在固定的格式字符串中动态地插入变量值,我们使用以 %开头的格式说明符(如 %d)。%d在这里扮演了两个关键角色:
    • 占位符:它在格式字符串中“占了一个位置”,告诉程序“这里将来要放入一个值”。
    • 类型声明:它明确声明了这个位置要放入的值是一个整型​ 数据。这确保了程序能以正确的方式(如十进制整数格式)来解读和输出后面的变量。
  3. 动态代入:从第二个参数开始,我们可以按顺序传入与格式说明符匹配的变量。程序执行时,会依次用这些变量的值​ 替换掉格式字符串中对应的格式说明符,从而实现了在固定模板中灵活输出动态内容。
#include <stdio.h>int main(){printf("%d", 10); // 输出一个整数printf("%f", 1.23); // 输出一个小数printf("%c", 'a'); // 输出一个字符// 输出字符串有两种方式printf("Hello World!"); // 方式1printf("我的名字为:%s", "吃西瓜的年年"); // 方式2return 0;}
  • 输出多个常量类型

    输出多个常量类型时,格式字符串中的说明符(占位符)必须与后续参数一一对应。

    这是最重要的原则。printf会严格按照格式字符串中 %说明符的顺序,去逐个匹配后面的参数。

    • 顺序对应:第一个 %对应第二个参数,第二个 %对应第三个参数,以此类推。
    • 类型对应:说明符必须与参数的数据类型严格匹配。
#include <stdio.h>int main() {printf("年龄:%d,成绩:%f,等级:%c,姓名:%s", 20, 95.5, 'A', "张三");return 0;}// 输出:年龄:20,成绩:95.500000,等级:A,姓名:张三
  • 输出换行
    在C语言中,输出换行可以通过转义字符来实现。换行符是\n,它用于在字符串中表示换行。当printf函数遇到\n时,它会从下一行开始继续输出。转义字符是填在第一个参数(格式字符串)里面的。
#include <stdio.h>int main(){printf("年龄: %d\n", 25 );printf("姓名: %s\n", "吃西瓜的年年");return 0;}

运行结果:
在这里插入图片描述

除了换行符,C语言中还有一些常用的转义字符,下面列出一些常见的:

  1. \n:换行(Newline),将光标移动到下一行的开头。
  2. \t:水平制表符(Tab),将光标移动到下一个制表位,通常相当于8个空格,但取决于环境设置。
  3. \\:反斜杠(Backslash),用于输出一个反斜杠字符。
  4. \":双引号(Double quote),用于在字符串中输出双引号,而不会终止字符串。
  5. \':单引号(Single quote),用于在字符常量中输出单引号。
  6. \0:空字符(Null character),代表字符串的结束。
  7. \b:退格(Backspace),将光标回退一个字符。
  8. \r:回车(Carriage return),将光标移动到当前行的开头,不换行。
  9. \f:换页(Form feed),用于打印机换页,在终端上可能会清屏或换页。
  10. \a:响铃(Alert),产生一声蜂鸣或系统警告声。

4. 变量

什么是变量

变量是程序中用于存储数据的基本单元,可以将其想象成一个有名字的"容器",用于存放各种类型的数据。

想象一下现实生活中的储物柜:

在项目中,经常发生改变的数据可以定义为变量。(淘宝商品的价格阿,收藏数量啊,未读消息等等)

变量的基本概念

  1. 变量声明语法

数据类型 变量名;

// 数据类型 变量名;
int a;
// int 是 数据类型(整型), a 是变量名

注:记得加英文的分号。

  1. 变量命名规则
  • 只能包含字母、数字和下划线
  • 不能以数字开头
  • 不能使用C语言关键字(如int, if, for等)
  • 区分大小写

基本数据类型

基本的数据类型除了int还有哪些呢?

变量的使用

  1. 赋值/修改值
// 声明变量。要声明变量才能赋值,不然会报错。
// 因为声明变量就是在给你的内存开辟空间,这块空间用来存放值。
// 没有声明变量,系统找不到这块空间,会报错。
int a;
// 给变量赋值。
// 如果没有赋值,直接打印出来也会报错。要先赋值才能使用。
a = 10;
// 修改变量的值
a = 20;
// 最终输出结果为 20。以最后修改的结果为准。

我们也可以把声明变量和赋值写在一起

int a = 10;
  1. 使用变量中记录的值
int a = 10;
int b = 20;
int c = a + b; // 参与计算
printf("%d\n", c) // 输出打印

注:

  1. 变量名不允许重复定义,不然会报错
    在这里插入图片描述
  2. 一条语句可以定义多个变量,中间用逗号隔开,结尾用分号
int a = 10, b = 20, c = 30;
// 等同于
// int a = 10;
// int b = 20;
// int c = 30;

在这里插入图片描述

  1. 变量在使用前一定要进行赋值;见上面的 变量的使用

ps: 在 visual c++ 中,要把声明放在最前面,不然会报错。vs 可以放在任意位置。
在这里插入图片描述
正确做法:

在这里插入图片描述

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

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

相关文章

Linux驱动学习:验证MasterDriverDevice三方匹配成功

实验日志&#xff1a; [root100ask:/proc/device-tree]# find -name "oled" ./soc/aips-bus02000000/spba-bus02000000/ecspi02008000/oled [root100ask:/proc/device-tree]# cd /root/ [root100ask:~]# insmod oled_drv.ko [ 119.745706] 100ask_spi_oled_drv spi0…

华为笔记本安装Ubuntu系统,声卡没有声音的处理

从网站:https://github.com/Smoren/huawei-ubuntu-sound-fix/,下载安装包,并安装即可

必看!AI架构师珍藏手册:1.5万字深度解析如何把AI关进确定性系统笼子

文章提出AI系统架构"四大生理系统"框架&#xff0c;将大模型从全能指挥官降级为心脏&#xff0c;系统逻辑接管决策。强调架构设计应遵循祛魅、解耦、归因三大法则&#xff0c;把概率性AI关进确定性系统。提供基于不确定性的技术选型指南&#xff0c;包含组件边界判定…

必收藏!基于模板-定理图谱的LLM数学推理增强技术,性能提升超乎想象!

本文提出了一种基于模板-定理图谱的数学推理增强框架&#xff0c;通过结构化关联问题模板与数学定理&#xff0c;模仿人类联想记忆机制&#xff0c;显著提升LLM在复杂数学问题上的推理能力。该方法利用LLM自动构建高质量知识图谱&#xff0c;设计高效检索与融合机制&#xff0c…

AES加密密钥安全存储、iOS设备管理实现方式Kafka能够实时收集、处理和分析用户行为数据,从而生成动态更新的用户画像AES加密密钥安全存储

AES加密密钥安全存储、iOS设备管理实现方式Kafka能够实时收集、处理和分析用户行为数据&#xff0c;从而生成动态更新的用户画像AES加密密钥安全存储 AES加密密钥安全存储、iOS设备管理实现方式Kafka能够在数据安全日益重要的今天&#xff0c;AES&#xff08;高级加密标准&…

ssm228图书预订 网上书城管理系统vue

目录系统概述核心功能模块技术实现创新点应用价值开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统概述 SSM228网上书城管理系统基于Vue.js前端框架与SSM&#xff08;SpringSpring MVCMyBatis&#xff09;后端架构开发&…

中石化加油卡兑换有隐藏玩法,闲置卡这样处理超划算 - 京顺回收

朋友小林前阵子收拾储物间,意外翻出三张闲置的中石化加油卡,卡里还有不少额度。可他平时开车少,放着怕过期。其实,像小林这样有闲置加油卡困扰的车主不在少数。2025年行业统计表明,超三成车主持有未用完的加油卡,…

【GPR回归预测】基于双向长短期记忆神经网络结合高斯过程回归(BiLSTM-GPR)的多变量回归预测 (多输入单输出)附Matlab代码

✅作者简介&#xff1a;热爱数据处理、建模、算法设计的Matlab仿真开发者。 &#x1f34e;更多Matlab代码及仿真咨询内容点击 &#x1f517;&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 &#x1f525; 内容介绍 一、技术背景与核心目标 多变量…

App自动化测试环境搭建(详细版)

只做记录和注意点&#xff0c;详细内容不做解释 环境&#xff1a;winappium夜神模拟器python 需要用到的工具&#xff1a; 1.java JDK 2. node.js 3. Android SDK 4.Appium-Server 5.Appium-Python-Client 6.appium客户端 7.夜神安卓模拟器 1、java jdk安装 官网下载…

MCP协议:LLM智能体的“万能转接器“,解决“一模型一接口“痛点,建议收藏

MCP&#xff08;模型上下文协议&#xff09;是解决LLM智能体"接口混乱"问题的通用交互标准&#xff0c;采用C/S架构统一LLM与外部系统的沟通语言。相比传统工具函数调用&#xff0c;MCP具有更高标准化程度、更好扩展性和复用性&#xff0c;能实现"即插即用"…

文件操作与文件内容操作

文件操作 File类文件/目录管理&#xff0c;对文件/目录进行CRUD、重命名&#xff0c;还可以查看文件的属性。是指文件外面显示的本身&#xff0c;不是内容。文件内容操作 I/O流Buffered缓冲流ByteArray字节数组流byte[]转换流InputStreamReader/OutputStreamWriter数据流Da…

基于MP2307设计一个12V到7.5V左右的开关电源

简 介&#xff1a; 本文介绍了基于MP2307芯片的12V降压开关电源设计&#xff0c;用于将锂电池电压降至7.2V为导航系统供电。通过单面PCB快速制板&#xff0c;实测空载输出7.29V&#xff0c;带载210mA时为7.35V。测试表明该340kHz工作频率的电源对150kHz导航信号基本无干扰&…

大数据领域数据中台的架构设计思路

大数据领域数据中台的架构设计思路 关键词:大数据、数据中台、架构设计、数据整合、数据服务 摘要:本文围绕大数据领域数据中台的架构设计思路展开,深入浅出地讲解了数据中台的核心概念、各部分之间的关系,详细阐述了其核心算法原理、具体操作步骤,通过实际案例展示了数据…

通过WiFI远程采集导航磁场信号

简 介&#xff1a; 本文测试了基于WiFi控制的导航信号远程采集系统。实验在锂电池供电条件下&#xff0c;将系统从室内移至室外&#xff0c;测试不同距离下的信号采集性能。结果显示&#xff0c;3米范围内采集数据正常&#xff0c;5米时信号减弱、角度信息抖动增大。更远距离测…

“超级工作站”的搭建,cpolar可成功内网穿透软件540!

GodoOS 是一款主打集成化的办公平台&#xff0c;它把日常办公所需的核心功能都整合在了一起&#xff1a;不仅能完成 Word 文档编辑、Excel 表格制作、PPT 排版、PDF 阅读等基础操作&#xff0c;还内置了内网聊天、在线白板、思维导图等协作工具&#xff0c;甚至配备了简易浏览器…

告别卡顿与隐私风险!本地文档编辑器 document搭载cpolar,远程办公超丝滑

document 作为基于 OnlyOffice 打造的本地化 Web 文档编辑器&#xff0c;核心功能是在浏览器端完成 docx、xlsx、pptx 等常见办公文档的新建与编辑&#xff0c;无需依赖服务器运行&#xff0c;尤其适合小微企业、临时项目团队以及注重文件隐私的普通办公人群。它的核心优点在于…

【干货收藏】LangGraph实战指南:告别LLM幻觉,打造确定性AI工作流

LangGraph是解决LLM幻觉问题的关键工具&#xff0c;通过支持循环逻辑、状态管理和人机协作等核心优势&#xff0c;超越了传统LangChain的DAG限制。文章详细介绍了LangGraph的结构组成&#xff08;全局状态、节点、边&#xff09;&#xff0c;并通过代码示例展示了智能翻译Agent…

Java字符串入门:API入门+String类核心

&#x1f3e0;个人主页&#xff1a;黎雁 &#x1f3ac;作者简介&#xff1a;C/C/JAVA后端开发学习者 ❄️个人专栏&#xff1a;C语言、数据结构&#xff08;C语言&#xff09;、EasyX、JAVA、游戏、规划、程序人生 ✨ 从来绝巘须孤往&#xff0c;万里同尘即玉京 文章目录✨Java…

大数据领域 GDPR 合规性评估方法

大数据领域GDPR合规性评估方法&#xff1a;从"踩雷"到"避雷"的系统指南 一、引入&#xff1a;当大数据撞上"史上最严"数据法 2022年&#xff0c;Meta因"剑桥分析门"后续的GDPR违规被欧盟罚款12亿欧元——这不是个例。同年&#xff0c;…