zoukankan      html  css  js  c++  java
  • C语言再学习——常量和变量

    常量和变量

     

    在计算机的内部,不能直接存储字符,所以计算机时以ascll码进行存储的。

    ascll表总共有128个,需记住:其中A=65,a=97,字符0=48。

     

    字符常量在内存中占用四个字节,但是字符变量在内存中占用一个字节。

    证:

    int main(int argc, const char * argv[])

    {

        char c = 'c';

        printf("changliang = %lu ",sizeof('a'));

        printf("bianliang = %lu ",sizeof(c));

        return 0;

     

    }

     

    字符串常量占用的数比对应字符大一,例:“jjj”,占用了4个字节,由于在字符末尾有一个/0,是占用一个字节的。

    在字符串打印时,只有碰到了/0时才会结束打印。

    证:

    int main(int args,const char * argv[])

    {

        printf("%s ","qianfang");

        return 0;

    }

    如上:在qian后面有,所以打印的时候只能打印到qian。

     

    数据类型决定了开辟内存空间的大小。

     

    C语言标识符:规定以下划线和字母开头,后面跟若字母或是下划线,数字。

     

    变量的声明:通知编译器该变量已经被定义在其他地方了,申明的时候不能为变量赋值。

    变量的定义:一定在内存中开辟了内存空间了。

     

    运算符:

    1.自增自减运算符

    int main(int args,const char * argv[])

    {

        int i = 0;

        int q = 0;

        int j = i++;

        int r = ++q;

        printf("j=%d,r=%d,i=%d,q=%d",j,r,i,q);

        //输出: 0,1,1,1

        return 0;

     

    }

    解析:++在变量后面,先赋值,之后在自增,++在变量前面,先自增,之后赋值给变量。

     

    逻辑关系之间的优先级关系:

    单目运算符>算术运算符

    逻辑与>逻辑或

     

    初始化:在定义变量的同时给变量一个值(养成变量进行初始化的习惯)。

     

    注意:在最后一个转义字符与双引号之间不能有任何空格。

     

    C语言中的类型转换(位扩展),由低位向高位进行转换,例如从char类型向int类型转换(保证了数值大小的不变),而不能有高位向低位转换(可能改变)。

    转换过程中,会发生位扩展,当正数时,在高位补零,当为负数时,高位补1,符号位为1,这样才能保证数值不变。

     

    通过数据类型显示的转换,称为强制类型转换,例如:int i = (int)12.33333;

    没有通过显示的转换,称为隐式的类型转换,例如:float f = 12.333+10;其中数值10位整形,在运算过程中就发生了隐的类型转换。

     

     

    位截断:

    当一个多字节类型的值赋值给低字节类型,就会发生位截断,例如:

    float f1=20.5;

    char ch = f1;

    printf("ch = %d ",ch);

    如上:由于float位4byte,但是char为1byte,赋值时发生了位截断,并且保留低位,向高位截断。

     

    类型转换的规律:

    隐式类型转换:由低位向高位转换。

    显示类型转换:既可以由低位向高位转换,也可以由高位向低位转换。

    如下所示:

    int main(int argc, const char * argv[]) {

        //隐式转换和显示转换

        //隐式转换

        int i = 5;

        float f = 5.33;

        printf("float = %f ",i+f);

        

        //显示转换--由低位转高位

        int j = 5;

        double d = (double)j;

        printf("double = %lf ",d);

        

        //显示转换--由高位转低位

        double dou = 12.2342;

        int in = (int)dou;

        printf("in = %d ",in);

        return 0;

     

    }

     

    如非声明,这是原创 糊涂猫until 

  • 相关阅读:
    SCOI2020游记
    关于我
    WC2020游记
    CSP-S 2019 游记
    回文自动机学习笔记
    全自动数字论证机(迫真)
    树状数组上二分
    《伊豆的舞女》 读书小记
    雅礼集训2019 Day5
    雅礼集训2019 Day4
  • 原文地址:https://www.cnblogs.com/BeyondAverage0908/p/4546139.html
Copyright © 2011-2022 走看看