运算

运算

一、四则运算,赋值运算

+,-,*,/,%
取余的结果符号和 % 左边的数保持一致

强制转换:不会改变原有数据的类型和值`

double d = 1.7;
int a = 10;
a = (int)d;
printf ("a = %d, d = %.1f\n", a, d);

a=1,d=1.7

隐式转换的规则:char --> short —> int, float ----> double, 整型 ----> 浮点型

例:

printf ("%lu\n", sizeof(10+2.0));
printf ("%lu\n", sizeof(10+2.0f));
int a = 10;
a = a + 2.0;
printf ("%lu\n", sizeof(a));

输出8,4,4
10+2.0转化为double类型
10+2.0f转化为float类型
a仍为int类型

例:

int a = 5;
a += a -= a*a;
printf ("a = %d\n", a);
	
int x = 8;
x *= x-= x+=x;
printf ("x = %d\n", x);

a = -40,x = 0

a=a+(a-=aa)对括号内计算a=a-aa=-20
即a=a+a(a=-20)
a=-40

二,关系运算

关系运算符结果要么真,要么假
真 用 1 表示, 真 的值是1 :非0都叫真
假 用 0 表示,假 的值是0 :只有0才是假

逻辑表达式:有一个短路规则
对于逻辑与 && :如果左边不成立,则右边表达式将不执行
对于逻辑或 || :如果左边成立,则右边不执行

例:

printf ("%d\n", (2>3 && 6>5));
int a = 10;
int b = 20;
a && (b = 30);
b || (a = 40);

printf ("a = %d, b = %d\n", a, b);

return 0;

a = 10, b = 30

!:对表达式的值进行取反 将真变为假,将假变为真

例:

int a = 10;
int b = 20;
!a && (b = 30);
!b || (a = 40);

printf ("a = %d, b = %d\n", a, b);

a = 40, b = 20

三,三目运算符(条件运算符)

A?B:C
如果A 成立, 则表达式的结果为 B 的结果
如果A不成立,则表达式的结果为 C 的结果

逗号运算符,结果是最后一个表达式的结果

int a = 10;
int b = 20;
int c = (a>b?a:b)+10;
int d = 40;

a<b?(a=1):c>d?(c=2):(d=3);
printf ("a = %d, b = %d, c = %d, d = %d\n",  a, b, c, d);

int e = (a+3, b+4, c+5,d+10);
printf ("e = %d\n", e);

a = 1, b = 20, c = 30, d = 40
e = 50

五、自增自减

a++ 先参与运算,再自增
++a 先自增,再参与运算

int x=8,y,z;
y = (++x) + (x++) + (++x);   
z = (--x) + (x--) + (++x);  
printf("y=%d, z=%d, x=%d\n", y, z, x);

在不同操作系统下结果不同
ubuntu : y=30, z=29, x=10
红帽: y=28, z=31, x=10
windows: y=30, z=33, x=10
对于Windows下的运算顺序:
1、先将表达式中所有前置的运算做完
2、当表达式运行结束后再将所有后置的运算做完

六、位运算

按位与 &, 可以对数据的某些位清0
按位或 |,可以对数据的某些位置1
按位异或^ :相同为0,不同为1,将某些位进行翻转(用1)
按位取反~
左移运算 << :往左移动n位 等价于乘以 2的n次方,移动的过程中,低位补0,高位舍弃
右移运算 >> :往右移动n位 等价于除以 2的n次方,移动的过程中,低位舍弃,高位按符号为补

运算优先级(从高到底)
四则运算
关系运算(大小比较>相等比较)
赋值运算

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值