【C语言】运算符、表达式和语句

一、运算符

Ⅰ算数运算符

1.加法运算符:+
加法运算符用于加法运算,使其两侧的值相加。运算对象可以是变量或常量。

例:
printf(“%d”,4+20);
打印的是24,而不是20+4。

income = salary + bribes;
计算机会查看加法运算符左右侧的变量,把它们相加,然后赋给变量income。

2.减法运算符:-
减法运算符用于减法运算,使其左侧的数减去右侧的数。

例:
takehome = 224.00 - 24.00;
结果是将200.00赋给takehome。

3.乘法运算符:*
乘法运算符用于乘法运算,原理与加法运算符、减法运算符相同。

4.除法运算符:/
C使用符号/来表示除法。/左侧的值是被除数,右侧的值是除数。
整数除法和浮点数除法不同:

#include <stdio.h>

int main()
{
	printf("%d\n",5 / 4);
	printf("%d\n",6 / 3);
	printf("%1.2f\n",7. / 4.);
	printf("%1.2f\n",7. / 4);
	
	return 0;
}

结果

1
2
1.75
1.75

整数除法的结果是整数,浮点数除法的结果是浮点数。

5除以3实际结果有小数部分,在C语言中,整数除法结果的小数部分被丢弃,这一过程被称为截断。

浮点数除以整数,编译器会把两个运算对象转换成相同的类型,在本例中,整数被转换成浮点数。 根据“趋零截断”,3.8处理后为3,-3.8处理后为-3。

5.求模运算符:%
求模运算符用于整数运算,给出左侧整数除以右侧整数的余数。

例:
11 % 5 得 2
11 % -2 得 1
-11 % -5 得 -1
-11 % 5 得 -1

如果第1个运算对象是负数,那么求模的结果为负数;如果第1个运算对象是正数,那么求模的结果也是正数。

注:求模运算符只能用于整数,不能用于浮点数。

6.符号运算符:+和-

例:
rocky = -12;
dozen = +12;
用于表明或改变一个值的代数符号。
以这种方式使用的符号被称为一元运算符。一元运算符只需要一个运算对象。

7.递增运算符:++
(1)作用:将其运算对象递增1。

(2)以两种方式出现:①前缀模式:++出现在其作用变量的前面。先自加1,再参与运算
                                      ②后缀模式:++出现在其作用变量的后面。先参与运算,再自加1
(3)好处:使得程序更加简洁

例:

include <stdio.h>
int main()
{
	int a = 1;
	int b;
	
	b = ++a;
	printf("a = %d , b =%d\n", a , b );

	b = a++;
	printf("a = %d , b =%d\n", a , b );
	return 0;
}

结果

a = 2 , b = 2
a = 3 , b = 2

8.递减运算符:–
同理递增运算符++

Ⅱ赋值运算符

1.赋值运算符:=
在C语言中, = 并不意味着“相等”,而是一个赋值运算符。

例:
bmw = 2002;

把值2002赋给变量bmw。
上面语句不读作 “ bmw等于2002 ”,而读作“ 把值2002赋给变量bmw ”。
赋值行为从右往左进行。

2.几个术语

(1)数据对象:用于储存值的数据存储区域统称为数据对象。
(2)左值:①它指定一个对象,所以引用内存中的地址
                    ②它可用在赋值运算符的左侧
                    ③可修改的左值:用于标识可修改的对象
(3)右值:指的是能赋值给可修改左值的量,且本身不是左值。

3.其他赋值运算符:+=、-=、*=、/=、%=

作用:更新变量
用法:左侧是一个变量名,右侧是一个表达式。

                               左侧与右侧代码效果相同

scores += 20scores = scores + 20
dimes -= 2dimes = dimes - 2
bennies *= 2bennies = bennies * 2
time /= 2.73time = time / 2.73
reduce &= 3reduce = reduce & 3

Ⅲ关系运算符

1.                              关系运算符

<小于
<=小于等于
==等于
>大于
>=大于等于
!=不等于

2.关系表达式:简单的关系表达式由关系运算符及运算对象组成。如果关系为真,关系表达式的值为1;如果关系为假,关系表达式的值为0

Ⅳ逻辑运算符

逻辑运算符含义
&&
||

·当且仅当 exp1 和 exp2 都为真时 , exp1 && exp2 才为真。
·如果 exp1 或 exp2 为真, 则 exp1 || exp2 为真。
·如果 exp1 为假 , 则 !exp1 为真 ;如果 exp1 为真,则 !exp1 为假

·求值顺序:从左往右,一旦发现有使整个表达式为假的因素 , 立即停止求值。

Ⅴ条件运算符

1.形式:expression1 ?expression2 : expression3;

2.C语言中唯一的三目运算符(三个运算对象) 。

3.如果expression1为真,那么整个条件表达式的值与expression2相同;如果expression1为假,那么整个条件表达式的值与expression3相同

例:( 5 > 3 ) ? 1 : 2的之为1

Ⅵ逗号运算符

在C语言中,逗号既可以作分隔符,又可以作运算符。逗号作为分隔符使用时,用于间断说明语句中的变量或函数中的参数;作为运算符使用时,将若干个独立的表达式连接在一起,组成逗号表达式。其一般形式为:表达式1,表达式2,…,表达式n。其运算过程为:先计算表达式1,然后计算表达式2,…,最后计算表达式n,并将表达式n的值作为逗号表达式的值。

Ⅶ位运算符

位运算符都用于整型数据,之所以叫做按位运算,是因为这些操作都是针对每一个位进行,不影响它左右两边的位

~按位取反
&按位与
|按位或
^按位异或
<<左移
>>右移

1.按位取反:~

一元运算符 ~ 把 1 变为 0,把 0 变为 1

例: ~(10011010)结果为
          (01100101)

2.按位与:&

二元运算符 & 通过逐位比较两个运算对象,生成一个新值。对于每个位,只有两个运算对象中相应的位都为1时,结果才为1。

例:(10010011)&(00111101)结果为
       (00010001)

3.按位或:|

二元运算符 | ,通过逐位比较两个运算对象,生成一个新值。对于每个位,如果两个运算对象中相应的位为1,结果就为1.

例: (10010011)|(00111101)结果为
        (10111111)

4.按位异或:^
二元运算符 ^ 逐位比较两个运算对象。对于每个位,如果两个运算对象中相应的位一个为 1(但不是两个为1),结果为1.

例:(10010011)^(00111101)结果为
       (10101110)

5.左移:<<
左移运算符(<<)将其左侧运算对象每一位的值向左移动其右侧运算对象指定的位数。左侧运算对象移出左末端位的值丢失,用0填充空出的位置。

例: (10001010)<< 2 结果为
        (00101000)

6.右移:>>
同理左移(<<).

Ⅷ其他运算符

1.长度运算符sizeof():单目运算符,以字节为单位返回运算对象的大小。C语言规定,sizeof()返回size_t类型的值,这是一个无符号整数类型。

2.函数调用运算符()

3.下标引用运算符[]:用来表示数组元素

4.强制类型转换运算符(类型):强制类型转换

4.查找地址 &运算符:一元&运算符给出变量的存储地址

5.间接(解引用)运算符*:找出存储在某变量中的值

6.访问结构成员(.)(->)

二、优先级

在这里插入图片描述

三、类型转换

1.隐式类型转换
(1)升级或降级:所谓升级,就是从较小类型转换为较大类型
                               所谓降级,是指把类型转换成更低级别的类型。

(2)涉及两种类型的运算,两个值会被转换成两种类型的更高级别。

2.强制类型转换
即在某个量的前面用圆括号括起来类型名,该类型名即是希望转换成的目标类型。

四、表达式和语句

1.表达式
表达式是由运算符和运算对象组成的。最简单的表达式是一个单独的运算对象。C表达式的一个最重要特性就是,每个表达式都有一个值。

2.语句

1.语句时C程序的基本构建块。一条语句相当于一条完整的计算机指令。在C中,大部分语句以分号结尾。最简单的语句是空语句,即只有一个分号。C把末尾上加上一个分号的表达式都看作是一条语句,所以8;4+3;类似这样写也是可以的。

2.复合语句:用花括号括起来的一条或多条语句,复合语句也称为块。


本文参考以下链接,对此链接作者表达感谢:
https://blog.csdn.net/Poem_coder/article/details/121884095

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值