在c语言中,我们常常需要进行某些特殊的操作,而为了简便,c语言便提供了一些特定的操作符供我们使用。注:操作符也被叫做:运算符,是不同的翻译,意思是⼀样的。
1.算术操作符
在写代码时候,⼀定会涉及到计算。
C语⾔中为了⽅便运算,提供了⼀系列操作符,其中有⼀组操作符叫:算术操作符。分别是:
+ - *
\ %
,这些操作符都是双⽬操作符。
补充:
双目操作符运算时一般要求两边数据类型。
A. + 与 -
+
和
-
⽤来完成加法和减法。
+
和
-
都是有2个操作数的,位于操作符两端的就是它们的操作数,这种操作符也叫双⽬操作符。
B.
*
运算符
*
⽤来完成乘法。
C. /
运算符
/
⽤来完成除法。
除号的两端如果是整数,执⾏的是整数除法,得到的结果也是整数。
比如5/2在计算机的结果为2,结果为整型,只取整数部分。若要得到2.5,应该把5和2改为5.0或2.0,即
两个
运算数必须⾄少有⼀个浮点数,这时 C 语⾔就会进⾏浮点数除法。
两个浮点数运算时结果类型为浮点型,得到2.5。
D. %
运算符
%
表⽰求模运算,即返回两个整数相除的余值。这个运算符只能⽤于整数,不能⽤于浮点数。
补充:
负数求模的规则是,结果的正负号由第⼀个运算数的正负号决定。
#
include
<stdio.h>
int
main
()
{
printf
(
"%d\n"
,
11
%
-5
);
// 1
printf
(
"%d\n"
,
-11
%
-5
);
// -1
printf
(
"%d\n"
,
-11
%
5
);
// -1
return
0
;
}
上⾯⽰例中,第⼀个运算数的正负号(
11
或
-11
)决定了结果的正负号。
2.赋值操作符
A. =
=代表了赋值,
但不能判断是否相等。
B.复合赋值符+=,-=,*=,/=,%=
如
int
a =
10
;
a +=
3
;后面实际上为a=a+3,故a应该为13.
3.单目操作符:++、--、+、-
A.前置,后置++,--区别
前置++
如:
int
a =
10
;
int
b = ++a;
//++
的操作数是
a
,是放在
a
的前⾯的,就是前置
++
printf
(
"a=%d b=%d\n"
,a , b);
先+1,后使⽤; a原来是10,先+1,后a变成了11,再使⽤就是赋值给b,b得到的也是11,所以计算技术后,a和b都是11。
后置++
为先使用,后+1。
int
a =
10
;
int
b = a++;
//++
的操作数是
a
,是放在
a
的后⾯的,
就是后置
++
printf
(
"a=%d b=%d\n"
,a , b);
a原来是10,先使⽤,就是先赋值给b,b得到了10,然后再+1,然后a变成了11,所以直接结束后a是 11,b是10。
补:--同理。
B. +与-
这⾥的+是正号,-是负号,都是单⽬操作符。
运算符
+
对正负值没有影响,是⼀个完全可以省略的运算符,但是写了也不会报错。
4.关系操作符
C 语⾔⽤于⽐较的表达式,称为 “关系表达式”(relational expression),⾥⾯使⽤的运算符就称
为“关系运算符”(relational operator),主要有下⾯6个。
•
>
⼤于运算符
•
<
⼩于运算符
•
>=
⼤于等于运算符
•
<=
⼩于等于运算符
•
==
相等运算符
•
!=
不相等运算符
补:关系表达式通常返回 0 或 1 ,表⽰真假。
注意:相等运算符 == 与赋值运算符 = 是两个不⼀样的运算符,不要混淆。
多个关系运算符不宜连⽤。
i < j < k
上⾯⽰例中,连续使⽤两个⼩于运算符。这是合法表达式,不会报错,但是通常达不到想要的结果,
即不是保证变量 j 的值在 i 和 k 之间。因为关系运算符是从左到右计算,所以实际执⾏的是下⾯的
表达式。
(i < j) < k
上⾯式⼦中, i < j 返回 0 或 1 ,所以最终是 0 或 1 与变量 k 进⾏⽐较。如果想要判断变量 j
的值是否在 i 和 k 之间,应该使⽤下⾯的写法。
i < j && j < k
5.条件操作符
条件操作符也叫三⽬操作符,需要接受三个操作数的,形式如下: exp1 ? exp2 : exp3 条件操作符的计算逻辑是:如果 exp1 为真, exp2 计算,计算的结果是整个表达式的结果;如果 exp1 为假, exp3 计算,计算的结果是整个表达式的结果。
如:使⽤条件表达式实现找两个数中较⼤值
#
include
<stdio.h>
int
main
()
{
int
a =
0
;
int
b =
0
;
scanf
(
"%d %d"
, &a, &b);
int
m = a>b ? a : b;
printf
(
"%d\n"
, m);
return
0
;
}
6.逻辑操作符
!
:逻辑取反运算符(改变单个表达式的真假)。
&&
:与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)。
||
:或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)。
注:C语⾔中,⾮0表⽰真,0表⽰假
这里仅介绍!
假如我们有⼀个变量叫
flag
,如果flag为假,要做⼀个什么事情,就可以这样写代码:
#
include
<stdio.h>
int
main
()
{
int
flag =
0
;
if
(!flag)
{
printf
(
"do something\n"
);
}
return
0
;
}
如果
flag
为真,
!flag
就是假,如果
flag
为假,
!flag
就是真 所以上⾯的代码的意思就是 flag
为假,执⾏if语句中的代码。