zoukankan      html  css  js  c++  java
  • C语言学习笔记-2.数据对象与运算

    一、信息的存储方式

      1.计算机以8个连续的位(bit、比特)为一组,称为一个字节(B、byte)

        1 Kb = 1024 byte

         计算机中每个存储单元一般是一个字节,可存放8个二进制数

    二、数据类型

      (一)整数类型

      1.C语言标准要求:(1)char < short <= int <= long

                               (2)char < short <= float <= double

      2.计算数据类型长度(字节数):sizeof(...)  (注意:sizeof属于运算符,不是函数)

      3.32位系统各整型数据长度:

    数据类型 字节数 比特数 取值范围
    int 4 32 -231 ~ 231 - 1
    short 2 16 -215 ~ 215 - 1
    long 4 32 -231 ~ 231 - 1
    char 1 16 -27 ~ 27 - 1

      4.32位系统无符号整型数据长度:

    数据类型 字节数 比特数 取值范围
    unsigned int 4 32 0 ~ 232 - 1
    unsigned short 2 16 0 ~ 216 - 1
    unsigned long 4 32 0 ~ 232 - 1

        (长度等于同类型整型数据)

      5.C99标准为C语言扩展了新的整数类型:long long

    数据类型 字节数 比特数 取值范围
    long long int
    4 32 0 ~ 232 - 1
    unsigned long long
    2 16 0 ~ 216 - 1

        (输入、输出均使用"%lld")

      6.R进制:R称为数制的“基数”

                   数制中每个固定位置所对应的单位值称为“权”

         快速计算:每一个八进制数相当于3位二进制数

                       每一个十六进制数相当于4位二进制数

      7.有符号整数存储方式:补码

         补码定义:正数补码即为其二进制形式

                       负数补码等于其绝对值的二进制形式,按位取反再加 1

         规律:正数补码最高位是0,负数补码最高位是1

         数据溢出:32767 + 1 == 32768

         注:存储方式:原码:最高位为符号位,0代表正数,1代表负数

                             反码:正数不变,负数逐位取反

                             补码:正数不变,负数逐位取反再 + 1

           采用补码的原因:方便进行运算,不必考虑符号位:(X + Y) == X + Y  (X - Y) == X - Y

       (二)实数类型

       1.32位系统各整型数据长度:

    数据类型 字节数 比特数 取值范围
    float
    4 32 -10-38 ~1038
    double 8 64 -10-308 ~10308
    long double
    16 128 -10-4932 ~104932

       2.控制字符:

    函数 float double long double
    scanf
    %f %lf %Lf
    printf
    %f %f %Lf

         (%e、%g同理)

      3.IEEE制定标准:

        单精度:SE E...E FF...F  双精度:SEE...E   F F...F

            01......8 9....31      01....11 12....63

       S:符号位  E:指数位  F:小数位

         数值:(-1)S * 2E - 127 * (1.F)

      (三)字符类型

      1.双重属性:整数属性(可以使用unsigned修饰符),字符属性('A' = 65, 'a' = 97)

        小写 = 大写 + 32

    三、常量

      常量分为字面常量(直接常量),符号常量(定义:宏命令:#define PI 3.14)

      (一)整型常量

      1.以0开头表示它为八进制数

         以0x开头表示它为十六进制数

      (二)实型常量

      1.如果小数点左边或右边为0,则此0可以省略(例:.124 == 0.124  124. = 124.0)

      2.指数形式中,字母e可写为E,指数部分必须是一个整数

         规范化形式:实数部分小数点左侧仅有1位非零数字

      (三)字符常量

      1.常用转义字符:

         a 响铃   退格   水平tab键  ? 问号   换行  \ 反斜杠  v 竖直tab键

    四、变量

      1.命名规则:只能包含字母、数字、下划线

             第一个字符必须是字母或下划线

             不能使用关键字,变量名与大小写相关

           变量命名法:(1)全小写,单词间加下划线(主要用于UNIX)

              (2)骆驼命名法:第一个字母小写,以后每个单词第一个字母大写,例:myCar

              (3)匈牙利命名法:变量名前加数据类型字符,例:整型变量:iMyCar(多用于Windows)

              (4)帕斯卡命名法:首字母大写,例:UserName(常用于类的变量)

           常量命名法:全大写,例:MAX_PARAMETER_COUNT

    五、运算符和表达式

      1.运算符优先性

    优先级

    运算符

    名称或含义

    使用形式

    结合方向

    说明

    1

    []

    数组下标

    数组名[常量表达式]

    左到右

     

    ()

    圆括号

    (表达式)/函数名(形参表)

     

    .

    成员选择(对象)

    对象.成员名

     

    ->

    成员选择(指针)

    对象指针->成员名

     

    2

    -

    负号运算符

    -表达式

    右到左

    单目运算符

    (类型)

    强制类型转换

    (数据类型)表达式

     

    ++

    自增运算符

    ++变量名/变量名++

    单目运算符

    --

    自减运算符

    --变量名/变量名--

    单目运算符

    *

    取值运算符

    *指针变量

    单目运算符

    &

    取地址运算符

    &变量名

    单目运算符

    !

    逻辑非运算符

    !表达式

    单目运算符

    ~

    按位取反运算符

    ~表达式

    单目运算符

    sizeof

    长度运算符

    sizeof(表达式)

     

    3

    /

    表达式/表达式

    左到右

    双目运算符

    *

    表达式*表达式

    双目运算符

    %

    余数(取模)

    整型表达式/整型表达式

    双目运算符

    4

    +

    表达式+表达式

    左到右

    双目运算符

    -

    表达式-表达式

    双目运算符

    5

    <<

    左移

    变量<<表达式

    左到右

    双目运算符

    >>

    右移

    变量>>表达式

    双目运算符

    6

    >

    大于

    表达式>表达式

    左到右

    双目运算符

    >=

    大于等于

    表达式>=表达式

    双目运算符

    <

    小于

    表达式<表达式

    双目运算符

    <=

    小于等于

    表达式<=表达式

    双目运算符

    7

    ==

    等于

    表达式==表达式

    左到右

    双目运算符

    !=

    不等于

    表达式!= 表达式

    双目运算符

    8

    &

    按位与

    表达式&表达式

    左到右

    双目运算符

    9

    ^

    按位异或

    表达式^表达式

    左到右

    双目运算符

    10

    |

    按位或

    表达式|表达式

    左到右

    双目运算符

    11

    &&

    逻辑与

    表达式&&表达式

    左到右

    双目运算符

    12

    ||

    逻辑或

    表达式||表达式

    左到右

    双目运算符

    13

    ?:

    条件运算符

    表达式1? 表达式2: 表达式3

    右到左

    三目运算符

    14

    =

    赋值运算符

    变量=表达式

    右到左

     

    /=

    除后赋值

    变量/=表达式

     

    *=

    乘后赋值

    变量*=表达式

     

    %=

    取模后赋值

    变量%=表达式

     

    +=

    加后赋值

    变量+=表达式

     

    -=

    减后赋值

    变量-=表达式

     

    <<=

    左移后赋值

    变量<<=表达式

     

    >>=

    右移后赋值

    变量>>=表达式

     

    &=

    按位与后赋值

    变量&=表达式

     

    ^=

    按位异或后赋值

    变量^=表达式

     

    |=

    按位或后赋值

    变量|=表达式

     

    15

    ,

    逗号运算符

    表达式,表达式,…

    左到右

    从左向右顺序运算

        说明:

        同一优先级的运算符,运算次序由结合方向所决定。

        简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符

      2.运算符要点:(1)/ :若为两整数相除,结果仍为整数(小数部分直接舍去,不是四舍五入)

                                %:要求两边的运算对象均为整数

                          (2)++、--:j = ++i;  :先自加,后赋值

                     j = i++;  :先赋值,后自加

             (3)移位运算符

                左移:逻辑、算术左移      移位后补0:逻辑移位

                右移:算术右移         移位后补符号位:算术移位

                作用:增加运算效率(应用:左移n位 = 乘以2n

             (4)位运算符

                &:按位与  作用:清零、取出特定位

                | :按位或  作用:将某些位定为1

                ^:按位异或 作用:将某些位翻转

                ~:按位取反

                应用:不使用临时变量交换两数:

                  a = a ^ b;  b = b ^ a;  a = a ^ b;

             (5)赋值运算符

                x = 5;

                y = (x == 5);    //y = 1;

                y = (x = 4);    //y = 4;

             (6)逗号运算符:  表达式1, 表达式2, ..., 表达式n

                从左至右依次执行,返回表达式n的值

      3.赋值转换:较长整型->较短整型:直接去掉多余的高端位

            实型->整型:舍弃小数部分

            整型->浮点:数值不变,但会存在精度问题

            高精度浮点->低精度浮点:会有精度损失

      4.运算转换:将“窄一点”转换为“宽一点”,以避免精度损失

  • 相关阅读:
    Spring AOP入门基础-继承、装饰者,代理的选择
    Java Ajax入门
    Servlet Config和Context入门
    MapReduce的Shuffle理解
    Servlet Response常用方法
    Servlet Request常用方法
    HDFS中block设置128M的原因
    【Java】java获取json中某个字段
    【Java】字符串转json
    【Linux】shell脚本参数传递
  • 原文地址:https://www.cnblogs.com/trj14/p/4271226.html
Copyright © 2011-2022 走看看