C语言学习笔记(数据类型,运算符和表达式05)20200618

算术运算符合和算术表达式

运算符的优先级:
C语言中,远符的远优先级共分为15级。1级最高,15级最低。在表还式中,优先级较高的先于优先级较低的进行运算。而在一个运量两侧的运符优先鉛相同时,则按运算符的结合性所规定的结合方向处理。

运算符的结合性:

C语言中各运算符的结性分为两种,即左结性(左至右)和右结(右至左)。

例如术运算符的结名性是自左至右,即先左后右。如有表达式×+y-z则y应先与’-'号结合,行×-y,然后+z的远算。

这种自左至右的结方向就称为“左结合牲”。而右至左的结合方向称为“右结合性”。最典型的右结性运符是赋运符。如x=y=z由于“=”的右结合性,应先行y=z再枕行x=(y=z)运算。C语言运算符中有不少为右结合性,应注意区別,以辟免理解错误。

在这里插入图片描述

自增、自减运算符

i++		//i参与运算后,i的值再自增1
i--		//i参与运算后,i的值再自减1
++i		//i自增1后再参与其他运算
--i		//i自减1后再参与其他运算
#include <stdio.h>
#include <stdlib.h>

void main()
{

   int i = 1;
   printf("%d\n",i);//i=i=1
   printf("%d\n",i++);//i=i=1输出为1 但i自身+1=2
   printf("%d\n",i--);//i=i=2输出为2 但i自身-1=1
   printf("%d\n",++i);//i=i+1=2输出为2
   printf("%d\n",--i);//i=i-1=1输出为1
}

在这里插入图片描述
练习:

#include <stdio.h>
#include <stdlib.h>

void main()
{

   int i = 5,j = 5,p,q;
   p = (i++) + (i++) + (i++);//5+6+7
   q = (++j) + (++j) +(++j);//6+7+8
   printf("%d,%d,%d,%d\n",p,q,i,j);
}

在这里插入图片描述

赋值运算符和赋值表达式

赋值运算符

变量 = 表达式
x = a + b

赋值表达式的功能是计算表达式的值再赋予左边的变量。赋值运算符具有右结合性。因此

a = b = c = 5

可理解为

a = ( b = 5 = ( c = 5 )

类型转换

如果赋值运符两边的数据类型不相同,系统将动进行类型转换,即把赋埴右边的类型换成左边的类型。具体规定如下:

1)实型赋予整型,舍去小数部分。前面的例子已经说明了这种情况。
2)整型赋予突型,数埴不变,但将以浮点形式存放,即增加小数部分(小数部分的值为0)。
3)字符型赋予整型,由于字符型为一个字节,而整型为4个字节,故将字符的AsCII码放到整型量的低八位中,高八位为0。整型赋予字符型,只杷低八位赋予字符量。

#include <stdio.h>
#include <stdlib.h>

void main()
{

   int a,b = 111;
   float x,y = 6.66;
   char c = 'k', c2;
   a = y;//a=6.66
   x = b;//x=111.0
   a = c;//a='k'=107
   c2 = b;//c2=111='o'
   printf("%d,%f,%d,%c",a,x,a,c2);
}


在这里插入图片描述

复合的赋值运算符

在赋值符“=”之前加上其他二目运算符可构成复合赋值符。如

+=-=/=%=<<=,
>>=,
>&=,
>^=,
>!=.

a += 5 等价于 a = a + 5;
x *= y + 7 等价于 x = x * (y + 7)
复合赋值符这种写法,有利于编译处理。

逗号运算符和逗号表达式

在C语言中逗号“,”也是一种运锫,称为逗号运算符。其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。
其一般死式为:

表达式1,表达式2

其求值过程是分别求两个表达式的,并以表达式2的值作为整个逗号表达式的值。

#include <stdio.h>
#include <stdlib.h>

void main()
{

   int a = 7, b = 3, c = 6, x, y;
   y = ((x = a + c),(b + c));//y=b+c
   printf("y = %d,x = %d\n",y,x);
}

在这里插入图片描述

对于逗号表达式要说明两点:
1)逗号表达式一般形式中的表达式1和表达式2也可以又是逗号表达式

例如:
表达式1,(表达式2,表达式3)
型成了嵌套情形。因此可以把逗号表达式扩为以下形式:
表达式1,表达式2,…表达式n
整个逗号表达式的值等于表达式n的值。

2)程序中使用逗号表达式,通常是要分别求逗号表达式内各表达式的值,并不一定要求整个逗号表达式的值。并不是在所有出现逗号的地方都组成源号表达式,如在变量说明中,函数参数表中逗号只是用作各变量之间的间隔符。

#include <stdio.h>
#include <stdlib.h>

void main()
{
    int f;
   f = (10,2,3,(7,8),1);
   printf("f = %d\n",f);

}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值