嵌入式03——数据类型 运算符 与 表达式

1. 转义字符

2.运算符 表达式 

算术运算  +      -     *     /        % 取余      ++      -- 

运算符 
表达式 由运算符 和 运算数 构成字符序列 
1+2 //所有的表达式都是有结果的(值)
      //表达式一定是有数据类型的 
    

1+(2*3) 
1+(2*3) 

3.隐式类型转换 

double <---- float    int <----char/short 

规则:从右向左:必转 
        从下到上:低精度类型 与 高精度类型混合运算 ,此时 低精度 往 高精度转   

4.表达式怎么看?
1)有哪些运算符?
2)运算符的
  优先级 
  结合性 

/ 除法 
  注意:
     1.除数不能为0
     2.整型数相除 --- 相当于是整除 

5.强制类型转换:
(类型)表达式 

123.4578
123.4578
问题:
编译时的问题
 错误  --- 语法错误 
 警告  --- 语法不合适 
运行时的问题
 逻辑问题 --- 调整思维 
 
6.%     
  注意:
     1.浮点型不能做求余运算 
     2.求余运算 第二操作数 不能是 0 
     3.求余运算的结果的符号 取决于 左操作数的符号 
  有啥用?
 a.判断奇数偶数?
   a%2 ==?
 b.a%N 结果 [0~N-1]
   抽题的程序?

7.++  //自加
   --  //自减 

   i++ //先用(表达式的结果) 后加 i
   ++i //先加i,后用 (表达式的结果)

   i++ //表达式的结果? 
  注意:
  1. 浮点数也能自增自减 
  2. ++,--运算数 必须是左值 (变量)
  3. 注意 尽量避免
     printf("%d%d\n",i,++i);
     不要写出这种不确定的代码 
  4.
op.c: In function ‘main’:
op.c:82:4: error: lvalue required as increment operand
  10++;
    ^~   
 lvalue (left value) //左值   --- 能放在 = 左边的这些量  
 int a;
 a = 10; 

constant // 常量的意思 
 
 const 
 const int a = 10;  //a 只读变量 ---只能读 不能修改 
 左值 (lvalue -- locationable) //可定位的   ---能不能被定位到 
 & 
 表达式 
 匿名变量  //都是右值  
  
8. i+++++i   //贪心原则
           从左到右逐个字符的扫描表达式,
           看这些字符能否,尽可能多的结合成c的运算符 
           不能结合,就还是字符本身
       
 i+++++i  
 i ++ ++ + i
 i++ ++ +i
  (((i++)++) + i)
  
9.赋值运算:
 =
赋值运算表达式的的结果,就是左值获得的值的 

int a;
a = 10;  
(a=(b=(c=1)))

+=
-=
*=  //赋值运算 
a += 1  // a = (a + 1)

10.逗号运算: 顺序求值运算符 
形式:
  表达式1,表达式2, ...,表达式n  
逗号表达式的结果:
是最后一个表达式的结果 

  • 27
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值