c语言学习day3

今日学习运算符和表达式 

表达式:由运算符和运算数构成的字符序列 

              表达式都是有结果的,表达式都是有数据类型的。

一、算术运算:+  、 -  、  *  (乘法)    、 /  (除法)  、% 、++、--

1.*(乘法) 

eg:a*b

2./(除法)  

1)被除数不能为 0 

2)两个整型数相除,因为结果还是整型 所以起到整除效果

注:代码出错
      1)编译时出错 --- >语法有问题 --- >去代码中找语法问题 
      2)运行时出错 ---> 逻辑有问题 --- >调整逻辑 

3.%  (求余)

1)求余的被除数不能为 0 

2)求余结果的符号 
                        // 取决于左操作数
eg:   10%3      //1
       -10%3      //-1
       -10%-3     //-1
       10%-3      //1

3)应用 

num%2 == 1           //奇数 

num%2 == 0           //偶数 

%10 ---->0,1,2,...,9

%N  ---->[0~N-1]

4.++  自增

    使操作数自增1
 
    1)a++           //后置++ 先用后加
    2)++a          //前置++ 先加后用
    
    注意:
     1.  先用后加和先加后用 的规则,必须是参与到别的运算中时,才发挥作用
     2.  运算数必须是一个左值 (变量)
     3.  不要写出
         printf("%d%d\n",i,i++);
         要写成:
         int n = i;
         int m = i++;
         printf("%d%d\n",n,m);
     4. 贪心原则:
        C 编译系统在处理时,
        尽可能多地(自左而右)将若干个字符组成一个运算符
        (在处理标识符、关键字时也按同样原则处理)
     eg:
     i+++++i       
     i ++ ++ + i  
     (i++ ++) + i
     ((i++)++) + i

5.--  自减 

    使操作数自减1

注:

 lvalue   (left value) --- 左值 --- 能放在 = 左边 
           //变量 
  rvalue   (right value) --- 右值 --- 只能放在=(赋值运算符) 右边

 constant                //常量的意思 
 
 const int a = 10;    //a被限定为只读变量 


 左值 (localable value) ---可定位的值 
 
 &                  //取地址运算 
 int a = 10;    //a对应开一块空间 
 
 &a              //取到了a所在空间的首地址编号    

注意:
   左值 -- 可被定位的 -- 叫左值     //能做 & (取地址运算)的就是左值
   eg:
      变量 
   右值 -- 不可被定位 -- 叫右值     //不能做 & (取地址运算)的 就是右值
   eg:
      10 
      1+2  //常量表达式 
      a+b  //匿名变量 --- 无法定位 

二、类型转换 

1.强制类型转换---->类型转换运算符

(类型)运算数

注意:强制类型转换只是运算符,并不会对运算数本身造成影响

2.隐式类型转换

      从右向左 ---> 必转 ---> char /short 必转 成 int 
                           float 必转为 double  (C99标准之后,不再必转)
      从下向上 ---> 不同精度混合运算
                  低精度往高精度转 

三、 赋值运算

1.=

一般要求左右两边类型一致

运算:
  int a;
  a = 10;       //将10赋值给a变量空间中 
  
  a = 10         //表达式 --- 就是有结果 类型
                     //赋值运算表达式的结果就是a中的值 

规则:
       高精度 => 低精度   ----  精度丢失 
       长类型 => 短类型   ----  高位截断 
       有符号短类型 => 长类型 --- 符号位扩展 , 符号位 是1 就扩展1,是0就扩展0    
       无符号短类型 => 长类型 --- 默认统统补0 

eg:

       unsigned short b = 0x8234; // 1000 0010 0011 0100
       signed short b = 0x8234;   // 0111 0010 0011 0100    
       a = b;                                  //a = 0xffff8234           

2.+=

a += 1;          //a = a + 1

四、逗号运算(顺序求值运算)

写法:
      表达式1 , 表达式2 , 表达式3, ..... 

运算过程:
      挨个求解表达式 

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

五、收获

       今天学习了算术运算符、隐式类型转换、赋值运算符、不同精度的数据间混合赋值以及逗号运算符。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值