5-运算符与表达式(1)

运算符与表达式:

a+b  a-b  a*b  a/b   加减乘除等于

40种左右运算符

 

1、赋值运算符

x=3;数学:x等于3  计算机:把3赋给x;结合性 优先级

符号: =    双目运算符(需要两个操作数)x=y  x左操作数  y右操作数

结合性:从右往左 a = b = 6;

注意:左值必须是变量   

 

2、加法运算符

符号:+ 双目运算符(需要两个操作数)x+y  x左操作数  y右操作数

结合性:从左往右  a+b+6;

 

3、减法运算符

符号:-  双目运算符(需要两个操作数)x-y  x左操作数  y右操作数

结合性:从左往右  a-b-6;

 

拓展: a = a + b;

b = a - b;  b = a+b-b;  b=a;

a = a - b;  a+b-b   红色的b是最开始没有改变的b  黑色的b是经过重新赋值之后的b

 1 #include <stdio.h>
 2 
 3 int main()  //在不加入中间变量的情况下,交换两个变量的值
 4 
 5 {
 6 
 7 int a,b;  //声明
 8 
 9 a = 755564693;
10 
11 b = 98765416;
12 
13 a = a + b;
14 
15 b = a - b;
16 
17 a = a - b;   a=a+b-b
18 
19 printf("a=%d\nb=%d\n", a, b);  //105  77
20 
21 return 0;
22 
23 }

 

4、符号运算符

符号: +(正)  -(负)  单目运算符(只有一个操作数) -a  -c  -d  +5  +7

结合性:从左往右

 

5、乘法运算符

符号:*  双目运算符

结合性:从左往右

 

6、除法运算符

符号:/  双目运算符

结核性:从左往右

截尾:整数相除,得到的小数,小数点后面的部分全部截掉。

 1 #include <stdio.h>
 2 
 3 int main()  //在不加入中间变量的情况下,交换两个变量的值
 4 
 5 {
 6     float a,b,n;  //声明
 7 
 8 
 9     a = 7.0;
10     b = 4.0;
11     n = a / b;
12 
13     printf("%f\n", n);  
14 
15 
16     return 0;
17 
18 }

 

混合运算:

 隐式转换:就是我们在惊醒运算的过程中,各种数据额类型之间的的转换。

 

 1 #include <stdio.h>
 2 
 3 int main()  //在不加入中间变量的情况下,交换两个变量的值
 4 {
 5 
 6     int i=5;
 7 
 8     float f = 5.2;
 9 
10     double d = 3.33;
11 
12     short s = 2;
13 
14     char c = 'A';
15 
16     int x;
17 
18     x = f*d + i*f - s*f + f / s - i*c; //17.316+ 26- 10.4+ 2.6 - 325 =   -289.484  
19  
20     printf("%d\n", x);  //35.516 double--->int
21     return 0;
22 
23 }

 

x = f*d + i*f - s*f + f / s - i*c;

1、f*d floatf  doubled   float-->double  最后多两个double类的值进行计算。

2、 i*f  --->double

3、 s*f--->double

4、 f / s --->double

5、 i*c  char-->int 得到int

6、 Doubleint  int-->double

7、 最后得到的是double

8、 赋值运算符总是把右操作数转换为做操作数的类型

 

+=-=运算符:

+=:  a+=b;---a=a+b;

-=: a-=b;----a=a-b;

 

自增,自减:

 1 #include <stdio.h>
 2 
 3 int main()  //在不加入中间变量的情况下,交换两个变量的值
 4 {
 5 
 6     int a = 5, b = 5;
 7     int aplus=0, plusb=0,sum;     
 8     sum = a++ + ++b;  //在这个表达式的计算过程中
 9      
10 
11     /*
12 
13     ++b;    1、b自增     b=6
14 
15     sum = a + b;   2、a=5 b=6  sum=11.
16 
17     a++;    3、a自增     a=6 
18     */
19 
20     printf("%d  %d  %d\n", a, b, sum);
21 
22      
23 
24     //aplus = a++; //先取值 后自增  先取a的值赋予aplus  a再自加
25 
26     //plusb = ++b; //先自增 后取值。b的值先+1,得到的值赋给plusb
27 
28     /*++b;
29 
30     b++;*/  //一定会自己加1 但是要考虑的是是用原来的值 还是用自加之后的值
31 
32     //
33 
34     //printf("a=%d\nb=%d\naplus=%d\nplusb=%d\n", a, b, aplus, plusb);
35 
36     // 6  6  5  6
37 
38     return 0;
39 
40 }

 

前缀自增:++a:先自增 后取值。

先给a进行计算,然后用计算后的a值带入表达式。

++a 我先处理你的事情,我再去计算。

 

后缀自增:a++:先取值 后自增。  

先用值计算表达式,表达式计算完成之后,我们在对a进行计算。

只要看见a++ 先不管 算完之后我再去找你。

 注意:一个变量在一个表达式里面出现多次,应该并且尽量避免使用++  --

 1  #include <stdio.h>
 2 
 3 int main()  //在不加入中间变量的情况下,交换两个变量的值
 4 {
 5     int a = 5, b = 5;
 6     int aplus=0, plusb=0,sum;
 7  
 8     //sum = b*a++;   //       a=5   b=5  sum=5*5   a=a+1;
 9     //sum = b*++a;   //a=a+1  a=6   b=5  sum=5*6 
10     //sum = a++ + ++a + ++a + a++; //不要大家计算 如果我看到我的学生写出这种代码  我就是一口老血喷出来。
11 
12     sum = a++;
13     sum = ++a;
14 
15     a++;
16     sum = ++a;
17  
18 
19     printf("%d  %d", sum, a);
20     return 0;
21 }

 

 

自减:-- 雷同 ++

 

2016 05 30 作业

1、写出 a+=a-=a*=a 的计算步骤 自己编写程序赋值 验证

2、写出 a++ + b-- * c++ 的计算步骤 自己编写程序赋值 验证

3、编写一个程序,要求有int short long char float double等数据类型,对他们进行混合运算。熟悉隐式转换的过程。

 

 1 #include <stdio.h>
 2 
 3 int main()  
 4 {
 5     int i = 5;
 6     float f = 5.2;
 7     double d = 3.33;
 8     short s = 2;
 9     char c = 'A';
10     int x;
11 
12     x = f*d + i*f - s*f + f / s - i*c; //17.316+ 26- 10.4+ 2.6 - 325 =   -289.484  
13 
14     printf("%d\n", x);  //-289    从double-289.484 转换到int -289
15 
16     return 0;
17 }

 

 

转载于:https://www.cnblogs.com/tiantiancode/p/11126307.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值