news 2026/6/20 17:48:26

语言——运算符基础知识浅析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
语言——运算符基础知识浅析

关于这个运算符,这是一个很常见的知识,从在座的各位会数数起,我们就接触到了最 简单的十以内的加减法。所以,我写这篇文章的主要目的依然和前面的基础知识一样,主要 是把它拿过来,在 C 语言的基础上进行理解、实践。然后,下面我会在 Linux 环境下,实践 C 语言所有的运算符,理解它的算法、规则。

那么 C 语言中有哪些运算符呢?算术运算符、关系运算符、逻辑运算符、位运算符、赋 值运算符、特殊运算符。下面我会一一通过程序例子的形式来实现每一个运算符的用法。

如上图所示,算术运算符包含了“+、-、*、/(除)、%(取余)、++、--”。唯一要注意 的是,浮点型,也就是 float/double 类型不能进行取余操作。其次要注意的是,++(自增) 和—(自减)运算,后面它们有一个前加加、后加加,还有前减减、后减减。至于它们有何 区别呢?下面我将通过一个例程来为大家讲解一下。

#include int main(int argc, const char *argv[]) { int a = 20, b = 20; int c = 20, d = 20; int sum1 = 0, sum2 = 0; int sum3 = 0, sum4 = 0; a++; sum1+=a; printf("sum1=%d\n" , sum1); ++b; sum2+=b; printf("sum2=%d\n" , sum2); c--; sum3+=c; printf("sum3=%d\n" , sum3); --d; sum4+=d; printf("sum4=%d\n" , sum4); return 0; }

好了,上述就是直接定义一个“++、--”运算符,然后直接拿下来用。就是无论如何,在定义 a++、++b、c--、--d 时,然后直接拿到下一行语句上用,它们只会该减则减,该加则 加,没有什么特殊的地方。但是,要想特殊一点,请看下面这个程序。

#include int main(int argc, const char *argv[]) { int a = 20, b = 20; int c = 20, d = 20; int sum1 = 0, sum2 = 0; int sum3 = 0, sum4 = 0; a++; sum1 += a; printf("sum1=%d\n" , sum1); printf("a++=%d\n" , a++); ++b; sum2 += b; printf("sum2=%d\n" , sum2); printf("++b=%d\n" , ++b); c--; sum3 += c; printf("sum3=%d\n" , sum3); printf("c--=%d\n" , c--); --d; sum4 += d; printf("sum4=%d\n" , sum4); printf("--d=%d\n" , --d); return 0; }

上面我直接加了四条 printf 语句,就是直接输出“a++、++b、c--、--d”的结果,这时的 结果就和上面的程序得到的结果不同。我们可以看出,a++(后加加)不会先运算,它会先 赋值再运算;++a(前加加)不会先赋值,它会先运算再赋值;后面的“--”运算也是这个原理。

对于关系运算符和逻辑运算符,我们主要是从上面两张图来了解并应用一下,自己试着 编个程序,首先定义一下两个变量,对这两个变量进行关系运算并赋值,再通过 printf 打印 输出出来。而逻辑运算符,我们要在关系运算符的基础上,进一步对其进行比较,比如,逻 辑非遵从的原则是,非 0 即 1、非 1 即 0;逻辑与运算符,则是用“&&”表示,遵从短路特性、 逢 0 截止的原则,也就是,只要左右两个表达式有一个为 0,则全为 0(全 0 则 0);逻辑或 运算符,则是用“||”表示,也是遵从短路特性、逢 1 截止的原则,也就是,只要左右两个表达 式有一个为 1,则全为 1(全 1 则 1)。

#include #define X 29 #define Y 23 int main(int argc, const char *argv[]) { int a = 29, b = 23; int c,d,e,f,g,h; c = (a > b); printf("c=%d\n" , c); d = (a >= X); printf("d=%d\n" , d); e = (a < b); printf("e=%d\n" , e); f = (a <= Y); printf("f=%d\n" , f); g = (a == b); printf("g=%d\n" , g); h = (a != b); printf("h=%d\n" , h); return 0; }

#include #define X 29 #define Y 23 int main(int argc, const char *argv[]) { int a = 29, b = 23; int c,d,e,f,g,h; c = ((a > b) && (b > a)); printf("c=%d\n" , c); d = ((a >= X) && (b <= Y)); printf("d=%d\n" , d); e = ((a < b) || (b < a)); printf("e=%d\n" , e); f = ((a <= Y) || (b >= X)); printf("f=%d\n" , f); g = (!(a == b)); printf("g=%d\n" , g); h = (!(a != b)); printf("h=%d\n" , h); return 0; }

根据上图所示,我们一个一个来说明一下其作用。首先是位逻辑反,也就是对该变量取 反操作,比如,~11001000,那么它的取反是我们这个二进制 00110111;其次是位逻辑与,和逻辑与相比,它 差了一个“&”符号,只要左右两边的表达式有 0 存在,那就全为 0,要全 1 才为 1;然后是位逻辑或,和逻辑或相比,它差了一个“|”符号,只要左右两边的表达式有 1 存在,那就全为 1, 要全 0 才为 0;再然后是位逻辑异或,用符号“^”表示,它主要遵守的是相同为 0、不同为 1 的原则;最后还有右移位和左移位,右移位用两个右尖括号表示,即,“>>”,左移位用两个 左尖括号表示,即“

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/14 3:45:21

Whisper本地部署实战:Gradio快速搭建轻量语音识别系统

1. 项目概述&#xff1a;为什么一个能“听懂人话”的网页界面值得你花30分钟搭起来最近帮一家做老年健康服务的团队做语音交互原型&#xff0c;他们需要让老人对着平板说“我胸口闷”“药吃完了”&#xff0c;系统就能自动转成文字、触发提醒或生成记录。没有NLP工程师&#xf…

作者头像 李华
网站建设 2026/6/15 23:28:14

Android Java版WiFi扫描工具源码,含信号强度检测与列表展示

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;一套开箱即用的Android WiFi扫描功能实现代码&#xff0c;用Java编写&#xff0c;支持实时扫描周边WiFi网络、显示SSID名称、BSSID、信号强度&#xff08;RSSI&#xff09;、安全类型等关键信息&#xff0c;并以…

作者头像 李华
网站建设 2026/6/14 4:15:43

如何高效部署manga-image-translator:一键搞定图片翻译的终极方案

如何高效部署manga-image-translator&#xff1a;一键搞定图片翻译的终极方案 【免费下载链接】manga-image-translator Translate manga/image 一键翻译各类图片内文字 https://cotrans.touhou.ai/ (no longer working) 项目地址: https://gitcode.com/gh_mirrors/ma/manga-…

作者头像 李华