【C语言篇】操作符详解
【C语言篇】操作符详解
- 【C语言篇】操作符详解
-
- 一、前言
- 二、算术操作符
- 三、赋值操作符
- 四、逻辑操作符
-
-
-
- 1. 逻辑取反(!)
- 2. 逻辑与(&&)
- 3. 逻辑或(||)
- 4. 短路特性
-
-
- 五、关系操作符
- 六、自增自减操作符
- 七、总结
【C语言篇】操作符详解
💬 欢迎讨论:学习过程中若有任何疑问或见解,欢迎在评论区留言交流。
👍 点赞、收藏与分享:如果这篇文章对你有帮助,别忘了点赞、收藏并分享给更多伙伴!你们的支持是我持续创作的动力!
🚀 分享给更多人:若你觉得本文有价值,欢迎转发给对C语言感兴趣的朋友,一起在编程的世界里进步!
一、前言
操作符又称运算符,只是翻译不同,含义完全一致。根据操作数的数量,操作符可分为单目操作符(需1个操作数)、双目操作符(需2个操作数)和三目操作符(需3个操作数)。
二、算术操作符
C语言为方便数值运算提供了算术操作符,包括+
、-
、*
、/
、%
,均为双目操作符。
-
+
、-
、*
的运算规则与数学中的加法、减法、乘法完全一致。 -
/
(除法):- 若操作数均为整数,结果为整数(仅保留商的整数部分,丢弃小数)。
#include int main() { float x = 6 / 4; // 6和4都是整数,结果为1 int y = 6 / 4; // 结果为1 printf(\"%f\\n\", x); // 输出1.000000 printf(\"%d\\n\", y); // 输出1 return 0;}
- 除法的取整规则:
- 两数同号(均为正或均为负)时,结果向下取整(如
3/2=1
,(-3)/(-2)=1
)。 - 两数异号(一正一负)时,结果向上取整(如
-3/2=-1
)。
- 两数同号(均为正或均为负)时,结果向下取整(如
-
%
(取模/求余):- 仅用于整数运算,返回两数相除的余数。
- 结果的正负号与第一个操作数的正负号一致。
#include int main() { printf(\"%d\\n\", 11 % -5); // 1(与11同号) printf(\"%d\\n\", -11 % -5); // -1(与-11同号) printf(\"%d\\n\", -11 % 5); // -1(与-11同号) return 0;}
三、赋值操作符
变量创建时赋予初始值称为初始化,创建后重新赋值称为赋值。
int a = 100; // 初始化a = 200; // 赋值
-
基本赋值:
=
是最常用的赋值操作符,可连续赋值(从右向左依次执行)。int a = 3, b = 5, c = 0;c = b = a + 3; // 等价于b = a+3(b=6),再c = b(c=6)
虽然C语言支持连续赋值,但代码可读性较差,建议拆分为单独语句。
-
复合赋值符:为简化对变量的自增、自减等操作,C语言提供了复合赋值符:
+= -= *= /= %=>>= <<= &= |= ^= // 后5种将在后续讲解
例如:
int a = 10;a += 3; // 等价于a = a + 3(a=13)a -= 2; // 等价于a = a - 2(a=11)
四、逻辑操作符
逻辑操作符用于构建逻辑判断表达式,包括:
!
:逻辑取反(单目操作符,改变表达式的真假)。&&
:逻辑与(双目操作符,两侧表达式均为真时结果为真,否则为假)。||
:逻辑或(双目操作符,两侧表达式至少一个为真时结果为真,否则为假)。
在C语言中,0
表示假,非零值表示真。
1. 逻辑取反(!)
!
会将真(非零)变为假(0),将假(0)变为真(1)。
#include int main() { int flag = 0; // flag为假 if (!flag) { // !flag为真,执行分支 printf(\"do something\\n\"); } return 0;}
2. 逻辑与(&&)
两侧表达式均为真时,结果为真;只要有一个为假,结果为假。
#include int main() { int month = 4; // 月份在3-5之间时,为春季 if (month >= 3 && month <= 5) { printf(\"春季\\n\"); // 输出春季 } return 0;}
3. 逻辑或(||)
两侧表达式至少一个为真时,结果为真;均为假时,结果为假。
#include int main() { int month = 1; // 12月、1月、2月为冬季 if (month == 12 || month == 1 || month == 2) { printf(\"冬季\\n\"); // 输出冬季 } return 0;}
4. 短路特性
逻辑操作符具有短路求值特性:仅根据左侧表达式结果就能确定整个表达式的结果时,不再计算右侧表达式。
&&
:左侧为假时,右侧不再计算。||
:左侧为真时,右侧不再计算。
例如:
int a = 1, b = 2;if (a > 5 && ++b) { // a>5为假,&&短路,++b不执行 // 不执行}printf(\"%d\\n\", b); // 输出2(b未改变)
五、关系操作符
关系操作符用于比较表达式的大小,返回0
(假)或1
(真),主要包括:
>
:大于<
:小于>=
:大于等于<=
:小于等于==
:等于!=
:不等于
关系表达式常用于if
、while
等条件判断结构中。
#include int main() { int x = 5; if (x == 5) { // x等于5时执行 printf(\"x is 5.\\n\"); } return 0;}
注意事项:
-
避免混淆
==
(等于)和=
(赋值):- 若误将
if (x == 5)
写成if (x = 5)
,会给x赋值5,且表达式结果为5(真),导致逻辑错误。 - 建议写成
if (5 == x)
,若误写为5 = x
,编译器会报错(常量不能被赋值)。
- 若误将
-
不建议连续使用关系操作符:
i < j < k
并非判断j在i和k之间,而是先计算i < j
(结果为0或1),再与k比较。- 正确写法:
i < j && j < k
。
六、自增自减操作符
++
(自增)和--
(自减)均为单目操作符,分为前置和后置两种形式。
- 前置
++
:先将变量值加1,再使用变量(++a
)。 - 后置
++
:先使用变量,再将变量值加1(a++
)。 --
的规则与++
类似,只是将加1改为减1。
示例:
#include int main() { // 前置++ int a = 10; int b = ++a; // a先+1(a=11),再赋值给b(b=11) printf(\"a=%d b=%d\\n\", a, b); // 输出a=11 b=11 // 后置++ int c = 10; int d = c++; // 先将c的值(10)赋给d,再c+1(c=11) printf(\"c=%d d=%d\\n\", c, d); // 输出c=11 d=10 return 0;}
七、总结
本文详细讲解了C语言中算术、赋值、逻辑、关系、自增自减等操作符的用法,涵盖了整数除法的取整规则、逻辑运算的短路特性、关系操作符的使用误区等关键细节。这些基础操作符是构建复杂程序逻辑的基石,理解其原理有助于写出更高效、更可靠的代码。
你好,我是意疏。我们一起进步。
意气风发,漫卷疏狂
学习是成长的阶梯,每一次的积累都将成为未来的助力。我希望通过持续的学习,不断汲取新知识,来改变自己的命运,并将成长的过程记录在我的博客中。
如果我的博客能给您带来启发,如果您喜欢我的博客内容,请不吝点赞、评论和收藏,也欢迎您关注我的博客。
您的支持是我前行的动力。听说点赞会增加自己的运气,希望您每一天都能充满活力!
愿您每一天都快乐,也欢迎您常来我的博客。我叫意疏,希望我们一起成长,共同进步。
我是意疏 下次见!