当前位置: 首页 > news >正文

C 运算符、表达式、语句

本文记录一下,在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.jsqmd.com/news/29309/

相关文章:

  • 题解:AT_abc036_d [ABC036D] 塗り絵
  • 2025 年 11 月高压锅炉无缝钢管,方形无缝钢管,16Mn 无缝钢管厂家最新推荐,聚焦资质、案例、售后的五家机构深度解读!
  • [论文笔记] Machine-Learning-Guided Selectively Unsound Static Analysis
  • 2025 年 11 月精密无缝钢管,合金无缝钢管,厚壁无缝钢管厂家最新推荐,实力品牌深度解析采购无忧之选!
  • 题解:AT_abc166_f [ABC166F] Three Variables Game
  • Awesome Neovim - 精选Neovim插件大全
  • 窗口函数
  • 别只怪客户端宕机!还有这些导致 Redis 分布式锁“死锁”的原因 - 公众号
  • CCF CSP-S2 2025 游记
  • CSP-S 2025 总结
  • LangChain v1.0 中间件详解:彻底搞定 AI Agent 上下文控制
  • 【EF Core】“多对多”关系与跳跃导航
  • DeepSeek-MTP多token预测
  • 11.2阅读笔记
  • 温故知新,英语口语提升计划之Social English - Greeting People
  • 23432
  • 关于dp
  • Git 协作实战与 Gerrit 评审流程
  • 分库分表MyCat 架构迁移 OceanBase | 百丽核心财务系统迁移经验总结与问题汇总
  • 算法研究内容算法有关概念
  • 第13天(中等题 滑动窗口)
  • 我重生了,重生到了CSP前——高中物理电学速通
  • 列车驶向何处 | CSP-S 2025 #3
  • 为啥slmbuild的cutoff不能设得很大
  • 团队项目1-团队展示选题-图书管理系统
  • 第二天,学习部分快捷键位(重点加粗)
  • windows terminal 配置文件
  • 第二章算法作业
  • Linux模板机优化实操
  • 渗透知识靶场实战