主要关于运算符和表达式

1.计算机的思维(高内聚  低耦合)

---------培养清晰的运算思维

准备数据(定义清晰‘类型’的变量)--------处理数据(分别整理所需数据,公式)-----------输出结果

流程图: start(开始-----Data(准备数据)-----Process(处理数据)----Terminator(输出结果)

编译时的问题:错误  --- 语法错误   ;   警告  --- 语法不合适

运行时的问题:逻辑问题 --- 调整思维


2.数据类型--关于字符型数据的拓展

首先关于“%c”输出以及char存储变量的问题。                                                                                    因为字符型数据占一字节,所以输出只能为一字节。                                                                     eg:char a=‘abc’ : printf(“%c”,a)--- 为 c      ,%d=c(char存储一字节)                                       若int a=‘abc’---%c依旧输出为c,但是%d=abc(int四字节)


然后,对于转义字符的了解

特别注意:\t---8格(包括所占的字符,且光标跳到8格之后的第一位)  ;  \b---退格(若前面为\n或是一个字符,就变成取消换行,和退掉字符)    ;   \r--移到本行开头(替换开头字符)   ;      \\----“\”(打印路径常用)   ;   \ddd---八进制代表的字符(“\133”输出为“[“)


字符类型的常量形式----‘a’=‘\141’(八进制)='\x61'(十六进制)

主要用到一个ASCII表的查询和了解(在vim中,指令“man ascii”打开ASCII表)


3.运算符 表达式

算术类型:+   -   *    /     %(取余)    ++(自增)      --(自减)

运算符:由运算符 和 运算数 构成字符序列 组成  (1+2)

注意:浮点型(float/double)不能用于求余的运算   ;   求余运算后位不能为0

隐式类型转换:

从右向左-------必转          ;       从下到上::低精度类型与高精度类型混合运算时,低到高

强制类型转换:(类型)表达式       eg:(float)10--------10.0(转换为浮点型)


运算的优先级


/:
除数不可以为0     ;      整型/整型=整型


%:

浮点型不能做求余运算   ;   求余运算 第二操作数 不能是 0   ;   求余运算的结果的符号取决于左操作数的符号(eg:-4%3=-1   ;    4%-3=1)  

用法:1.判断奇数偶数 (a%2,结果只能为1/2)    ;   

           2.抽题的程序 (用到工具,但是a%100就可以生成任意的两位数),代码如下(50~100)

#include <stdio.h>           
#include <stdlib.h>                                //借用工具(函数),随机生成数字
#include <time.h>                                  //借用调用时间程序,使其生成数字一直在变化

int main(void)
{
    int i = 0;                                               //初始化

    srand(time(NULL));                             //调用时间,重复生成随机数字
    for (i = 0; i < 10; ++i)                           //循环(10次)
    {
        printf("%d\n",rand()%50+50);         //随机数%50---任意的0~49内的随机数+50------50~99的    }                                                                 随机两位数
    return 0;
}


++       ;       --

注意:i++ //先用(表达式的结果) 后加 i           ;     ++i //先加i,后用 (表达式的结果)
           浮点数也能自增自减                            ;  ++,--运算数 必须是左值 (变量---可以&到的值)
           左值 (lvalue -- locationable) //可定位的   ---能不能被定位到 (&)
           printf("%d%d\n",i,++i)是错误的 ,会有不确定的运算,要写成:printf("%d\n",i(或者i++))
           constant -----常量的意思,也就是右值,同样   匿名变量和表达式也是右值

贪心原则:从左到右逐个字符的扫描表达式,看这些字符能否,尽可能多的结合成c的运算符 
不能结合,就还是字符本身。eg:i+++++i   ---------  i ++ ++ + i   ------------    i++ ++ +i    --------
(((i++)++) + i)  -------- i++ 是一个 表达式(i自增),所以是个右值,无法运算


赋值运算:
--------  "="  (赋值运算表达式的的结果,就是左值获得的值的)

+=  -=   *=

a += 1  ------ a = (a + 1)


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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值