C 运算符、表达式、语句

news/2025/11/2 19:27:43/文章来源:https://www.cnblogs.com/bigbosscyb/p/19185239

本文记录一下,在C语言中的基本概念;在很多书籍中运算符、表达式、语句会被分为多个章节,细致地介绍;但本人记录这个系列主要是为了拾遗,所以就将觉得有必要提及的知识点记录下来。
运算符大概分为算术运算、逻辑运算、单目运算符、三目运算符这些;运算符和运算对象可以组成表达式;表达式加上分号又构成了语句;一组语句能够完成一项特定的工作,为了重复利用这些语句,又引出了函数。。。。。

整数相除还是整数

#include <stdio.h>int main(void) {printf("5/3=%d\n", 5 / 3);printf("5/3.0=%f\n", 5 / 3.);return 0;
}

输出:

5/3=1
5/3.0=1.666667

从上面结果可以看出整数除法由于结果还是整数所以算出的结果只有商,余数被丢弃。

类型转换

理论上来讲表达式中两个数类型应该相同,但如果出现了不同类型的,那么低类型会向高类型自动转换,比如:5/3.0,最终会被自动转成5.0/3.0。
还有一种想从高类型转成低类型的、或者希望自己进行类型转换的场景,此时可以使用(类型名)数据对象 的方式进行强制类型转换。

异或运算实用小技巧

我们知道想要实现两个变量互相交换值,则需要引入一个临时变量:

#include <stdio.h>int main(void) {int a = 1;int b = 2;printf("交换前,a=%d,b=%d\n", a, b);int tmp = a;a = b;b = tmp;printf("交换后,a=%d,b=%d\n", a, b);return 0;
}

输出:

交换前,a=1,b=2
交换后,a=2,b=1

有了异或运算符之后,无需引入临时变量,使用异或即可。

#include <stdio.h>int main(void) {int a = 1;int b = 2;printf("交换前,a=%d,b=%d\n", a, b);a = a ^ b;b = b ^ a;a = a ^ b;printf("交换后,a=%d,b=%d\n", a, b);return 0;
}

sizeof求数据大小

语法: sizeof(运算对象)
圆括号中可以是 类型名 ;也可以是具体的数据对象如 变量名;当圆括号中的对象是类型名时 圆括号不可省略

#include <stdio.h>int main(void) {size_t size_char = sizeof(char);printf("char 类型占据:%zu 字节\n", size_char);size_t size_int = sizeof 1;printf("整数1占据:%zu 字节\n", size_int);const float pi = 3.14159;size_t size_float = sizeof(pi);printf("变量pi占据:%zu 字节\n", size_float);return 0;
}

输出

char 类型占据:1 字节
整数1占据:4 字节
变量pi占据:4 字节

表达式和语句

一个值 一个变量都算是一个表达式;但是表达式不是c程序的基本模块,语句才是;所以表达式一般不能单独出现。语句常见的形式为表达式+分号

#include <stdio.h>int main(void) {int a;a;1;1+1;return 0;
}

上面展示的这些都可以称作是语句。

条件、循环、跳转语句

多条语句能够实现特定的功能;根据语句块的形式又可以将语句分为:具有顺序结构的一般语句、具有分支结构的条件语句、具有循环结构的循环语句、具有跳转能力的跳转语句。

  • 顺序结构:代码从上到下一行一行地执行语句,这种格式太过简单与常见,不再赘述
  • 分支结构:最常用的if else 的组合;或者 switch case组成的多分支结构
  • 循环结构:最常见的是 for ([只会在循环开始时执行一次的初始表达式];[循环是否能够继续的条件表达式];[促进循环表达式];) 或 do{循环体} while(循环是否继续的表达式) 及 while(循环是否继续的表达式) do
  • 跳转语句:
    break语句 结束当前层循环,继续后续代码;(注意:由于程序中可能存在多层循环嵌套,break;只是跳出离他最近的那层循环,再外层的循环不受影响);
    continue语句 立刻跳出此次迭代,开始执行下一趟迭代;尽管continue后面跟的可能还有一些语句没有执行,这一趟也不再执行了。
    简单打印一个99乘法表
#include <stdio.h>int main(void) {int a;for (a = 1; a <= 9; a++) {int b;for (b = 1; b <= 9; b++) {if (b < a) {printf("\t\t");continue;}printf("%d*%d=%d\t", a, b, a * b);}printf("\n");}return 0;
}

输出:
9*9乘法表
以上便是对C语言运算符、表达式、语句、控制语句知识点的记录。

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

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

相关文章

题解:AT_abc036_d [ABC036D] 塗り絵

题意 有一棵由 $N$ 个点 $N-1$ 条边构成的树,求出树上每个点染成白色或黑色,但相邻两个点不能同时染成黑色的染色方案数量,并取模 $10^9+7$。 思路 对于这种求合法方案数的题目,一般可以考虑 $dp$ 。设 $dp_{i,1}$…

2025 年 11 月高压锅炉无缝钢管,方形无缝钢管,16Mn 无缝钢管厂家最新推荐,聚焦资质、案例、售后的五家机构深度解读!

近期,由十家行业专业机构联合开展 2025 年 11 月高压锅炉无缝钢管、方形无缝钢管、16Mn 无缝钢管专项测评,测评覆盖近百家主流厂家,以 “资质合规性、项目案例真实性、售后服务完善度” 为核心,结合技术实力、产品…

[论文笔记] Machine-Learning-Guided Selectively Unsound Static Analysis

Introduction 现有的静态分析工具都是 unsound 的,并且体现为 uniformly unsound。这里的“uniformly”指静态分析工具会用一种统一地忽略所有不能处理的特性,而不考虑代码上下文。这种策略会减少误报率 \(\frac{fal…

2025 年 11 月精密无缝钢管,合金无缝钢管,厚壁无缝钢管厂家最新推荐,实力品牌深度解析采购无忧之选!

近期,行业权威协会针对精密无缝钢管、合金无缝钢管、厚壁无缝钢管领域开展了 2025 年度 11 月专项测评,测评覆盖近百家主流厂家,从技术实力、产品质量、生产能力、售后服务、市场口碑五大维度,采用数据化评分与实地…

题解:AT_abc166_f [ABC166F] Three Variables Game

题目 思路 这是一道比较简单的贪心题。 不断地分类讨论。哪一个小就加一,另一个就减一。如果两个都相等时,就判断下一个,有相同的就加一,另一个减一,如果都没有相同的,就随便加减。如果两个都为 $0$ 时,就直接输出…

Awesome Neovim - 精选Neovim插件大全

Awesome Neovim是一个精心策划的Neovim插件集合,专注于展示Neovim特有功能的插件。项目包含插件管理器、LSP支持、自动补全、语法高亮等各类高质量插件,帮助用户打造高效开发环境。Awesome Neovim精选的Neovim插件集…

不会AI编程?没关系!这几个框架也让你也能开发AI聊天助手!

这篇教程教你从零开始,使用FastAPI+Vue构建类似Deepseek的AI助手。内容涵盖完整的前后端架构设计、数据库规划、LLM集成、安全防护与性能优化等。即使编程经验不多,也能跟着步骤实现打字机效果等流畅交互功能,打造一…

[KaibaMath]1018 基于复合函数理解子数列的一般项

[KaibaMath]1018 基于复合函数理解子数列的一般项子数列一般项的下标形如阶梯,我们不妨称其为数列下标的阶梯表示法。但这种表示法给出的一般项委实不容易理解,故本文基于复合函数给出一种更容易的理解方式。基于此,…

窗口函数

窗口函数:它们都用于为查询结果集中的每一行分配一个排名或序号 核心区别总结表函数功能描述排序特点(针对相同值)序号示例ROW_NUMBER() 为每一行生成一个唯一的、连续的序号。 即使值相同,也会分配不同序号(顺序…

别只怪客户端宕机!还有这些导致 Redis 分布式锁“死锁”的原因 - 公众号

本文已收录在Github,关注我,紧跟本系列专栏文章,咱们下篇再续!🚀 魔都架构师 | 全网30W技术追随者🔧 大厂分布式系统/数据中台实战专家🏆 主导交易系统百万级流量调优 & 车联网平台架构🧠 AIGC应用开发…

CCF CSP-S2 2025 游记

\(\text{Day0}\) 看到了 2024 年的第三题,我一直在复习组合计数 DP。结果,一天就弄懂了两道题。。。 \(\text{Day1}\) 第一件事自然是洛谷签到,中吉,忌出行、摸鱼。 早上八点出发,一早起来大雾,告诉走不了高速,…

CSP-S 2025 总结

114,514,1919810.0.前言 信心十足! 1.正文 不会做原题。 2.总结 我是人类吗?

LangChain v1.0 中间件详解:彻底搞定 AI Agent 上下文控制

用 LangChain 构建 AI Agent 的人应该都遇到过这种情况:测试阶段一切正常,部署到生产环境就开始出各种问题。上下文管理混乱,Agent 的行为变得难以预测,最后不得不写一堆自定义代码来控制信息流向。 这是因为在v1.…

【EF Core】“多对多”关系与跳跃导航

“多对多”关系不像“一对多”那么“单纯”,它内部涉及到“连接实体”(Join Entity)的概念。咱们先放下这个概念不表,来了解一下多对多数据表为什么需要一个“辅助表”来建立关系。 假设有两张表:一张表示学生,一…

DeepSeek-MTP多token预测

多Token预测(Multi-Token Prediction, MTP)是DeepSeek-V3模型的一项核心创新技术,旨在通过一次前向传播预测多个未来词元,从而显著提升模型的训练效率和推理速度,同时增强对上下文的理解能力。该技术原始论文是由…

11.2阅读笔记

《断言式编程》这一章教我如何主动地、有章法地处理程序中的“意外”情况。 ​​1. 断言式编程:明确你的假设​​ “断言式编程”的核心思想是:​​用代码明确地表达你对程序状态的假设,如果假设被违反,就果断地报…

温故知新,英语口语提升计划之Social English - Greeting People

Greeting People Look at some ways to greet people. Do you greet people that you meet for the first time the same way that you greet people you know? What can change? Greeting People You Meet for the …

23432

23432 32423 ‍本文来自博客园,作者:对象存储与RustFS,转载请注明原文链接:https://www.cnblogs.com/rsfs/p/19185241/23432-2fnvqw

关于dp

dddddddddpppppppp发扬多头精神,质疑dp,理解dp,成为dp! 由浅入深 ATcoder Dp 普及~提高的版子记录 LinkA - Frog 1B - Frog 2C - VacationD - Knapsack 1E - Knapsack 2F - LCSG - Longest PathH - Grid 1I - Coin…

Git 协作实战与 Gerrit 评审流程

Git 协作实战与 Gerrit 评审流程Git 协作实战与 Gerrit 评审流程适用场景:公司内网仓库 + Gerrit 评审流程;服务器上 Git 版本较老(无 git switch、git restore)。 示例仓库:/home/aaa/bbb/ccc,远端别名 origin。…