运算符和表达式(四)

赋值运算符

定义

赋值运算符“=” 赋值表达式是由赋值运算符连接左边一个变量和右边一个表达式构成
【变量】=【表达式】

优先级和结合性

优先级:!>算术>关系>&&和||>赋值

结合性:自右至左

注意点

1.

赋值号右边表达式可以是任意一种表达式,包括算术表达式,逻辑表达式等,甚至可以是一个变量或另一个赋值表达式

2.

如果表达式值的类型,与被赋值变量的类型不一致,但都是数值型或字符型时,系统自动地将表达式的值转化成被赋值变量的数据类型,然后赋值给变量

#include<stdio.h>
int main()
{
  int j;
  j=2.5;
  printf("j=%d",j);
}

输出结果:
j=2

复合赋值运算符

定义

由赋值运算符之前(左边)再加一个双目运算符构成

格式

一般格式:表达式1 op =表达式2 例:a+=b-1

​ 等价于:表达式1=表达式1 op (表达式2) 例:a=a+(b-1)

类型

二元算术运算符组合: *= /= %= += -=

​二元位运算符组合: <<= >>= &= |= ^=

优先级和结合性

优先级:与赋值运算符同一优先级

结合性:自右向左

注意点

1.

C语言中所有二元运算符和二元位运算符都可以与赋值运算符组合成复合赋值运算符

2.

y*=x+6 等价于y=y*(x+6),而不是y=y*x+6

逗号运算符

作用

符号:“,”,
作用:将几个表达式隔开并以此计算

格式

[表达式1],[表达式2],…[表达式n]

优先级和结合性

优先级:最低
结合性:自左至右

注意点

1.

整个表达式的值:最后一个表达式的值
例:

#include<stdio.h>
int main()
{ int num;
  num=(2+2,2*3,5);
  printf("num=%d",num);
}

输出结果:
num=5

2.

C语言常用逗号作为分隔符
例如:
int a=3,b=4,c=5;
printf(“%d,%d,%d”,(a,b,c)); ——错误,abc作为整体经由逗号运算符,只输出c
printf(“%d,%d,%d”,a,(a,b,c),c); ——正确,输出结果为3,5,5

条件运算符

作用

符号:“?:”
作用:判断一个逻辑表达式的结果,如果为真则指定执行某个表达式,如果为假则指定执行另外的表达式。条件表达式的实质就是起程序控制作用

格式

表达式1 ? 表达式2 :表达式3

求值规则

先求解表达式1的值,若为真(非0),求解表达式2,并把表达式2的值作为整个条件表达式的值;若表达式1的值为假(0),求解表达式3,并把表达式3的值作为整个表达式的值

优先级和结合性

优先级:逻辑>条件>赋值
结合性:自右至左

求字节数

方法

使用sizeof()运算符,sizeof()是一个单目运算符,用于计算一个某种类型的运算量所占用的字节数。

格式

一:sizeof(类型标识);
二:sizeof(变量名);或 sizeof 变量名;
例:

#include<stdio.h>
int main()
{
  int a;
  double x;
  printf("%d,%d\n",sizeof(a),sizeof x);
  printf("%d,%d",sizeof(int),sizeof(double));

输出结果:
4,8
4,8

相生相成

类型转化

自动类型转换

定义

在运算时不必用户干预,系统自动进行的类型转换

分类
自动类型转换
赋值转换
运算转换
赋值转换

1.浮点型赋值给整型,结果将舍弃浮点数小数部分
2.整数赋值给浮点数,数值不会发生变化,结果以浮点数的方式存在
3.字符型赋值给整型,数值不会发生变化,但以整型的方式存储,内存空间变大
4.整型赋值给字符型,只把整型变量低8位赋值给字符型变量
5.双精度浮点数赋值给单精度浮点数,有效位会减少,丢失的部分四舍五入

#include<stdio.h>
int main()
{
  int i=257;
  char ch=i;
  int j=3.1415;
  printf("%d,%d",ch,j);
}

输出结果:
1,3

257在计算机中表示为:010000001
赋值给字符型后,表示为:00000001
转化为十进制后为1

运算转换

1.C语言允许整型、实型、字符型数据进行混合运算。
2.在进行运算时,不同类型的数据要先转换为同一类型,然后再进行计算。
3.转换的过程是C语言编译器自动进行的
4.转换按数据占用字节数增加的方向转换,例如int类型和short类型的变量进行计算时,会把short类型转换成int类型之后再进行计算
5.浮点数运算都是按照双精度进行的,float类型的变量会先换成double类型再进行计算
7.

char
int
short
unsigned
lomg
double
float

特点:有数值存储位数少的向多的转换

强制类型转换

定义

当自动类型转换不能实现目的时,可以用强制类型转换
强制类型转换是由程序员通过类型说明符实现的,通过强制类型转换可以将一种类型的变量转化为另一种类型

格式

(类型说明符) [表达式]

注意点

1.类型说明符和表达式都必须加括号,如果表达式是单个变量则可不加
2.无论是强制类型转换还是自动类型转换,都不改变其原变量的数据类型。即对一个变量进行强制转换后得到一个新类型的数据,原来的变量类型是不变的。

总结

总结运算符中的部分让特殊运算符和类型转换的知识点

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值