C 基础 (变量初始化)

    技术2022-05-11  25

    变量使用之前要对其进行初始化。

    char a   --->1个字节

    int  b    --->2个字节

    float c   --->4个字节

    double d   --->8个字节

    double i=10.11 和 double i;i=10.11是等效的。

    变量的两个属性:

    存在性:它具有一个数据类型并以一定的方式存在于内存中。

    可见性:在它的作用域中是可见的。

    变量的存储类型有四种:

    auto   :重新访问值不发生变化,它是局部变量,每进入一次函数就初始化一次

    {

    auto int a  //auto可以省略不写。

    }

    register,通过保留字register来完成,它的作用域是和auto一样的,变量保留在cpu的寄存器中,只是对编译程序的一种建议,而不是强制类型的,即可以由系统来调度。

    这种变量无法求地址,他是一种宝贵的资源

    static  :可保存的,它的生命周期一直延迟到程序的结束。

    局部变量不一定赋予初值,编译时对无值的赋予0(auto一定要有初值)

    局部变量的作用域与auto,register相同

    extern:在函数外部任意位置定义的全局变量

    extern的作用域是全局的,在整个C文件中。位置从它被定义的位置开始。

    它的生命周期是整个程序的运行期间。

    当它和局部变量重名时就被局部变量屏蔽。如果需要就要加上extern保留字。

    算术运算符号:+ - * /

    他们的优先级别是-(负号) *  /  +  -,它们可以用()调整

    左结合原则。

    模运算符号%

    它的优先级和结合方向同*  /相同

    n%m的操作数均为整形数据。

    余数的符号与被除数一致:

    7%3=1

    -2%3=-2

    -3%-2=-1

    -2%-3=-2

    二元操作数据最好两侧一致。

    赋值运算=

    左操作数一定是变量,右侧可以为常量、变量和表达式。

    类型与左端一致。

    结合顺序是从右到左。算术运算符的优先级高于赋值运算符

    ++与- -

    它是单目运算符号。它与变量结合。

    但是如下的操作(i+j)++是错误的,因为不能返回值给指定的内存区域。

    ++a 与 a++和其他的语言一致。

    如下例子:

    i++*++i+i--*--i=?

     

     

     

    #include  " stdafx.h " int  _tmain( int  argc, _TCHAR *  argv[]){         int  i = 3 ;    printf( " i=%d " ,(i ++*++ i + i --*-- i));    getchar();     return   0 ;}

    执行结果:

    类型转化:

    强制类型转化:

    (类型)表达式

    逗号表达式:

    从左到右执行,

    a=(表达式1....表达式n),a为最后一个表达式的值。

    逗号表达式的优先级在所有的运算符中是最低的。

     


    最新回复(0)