Beyond平君

导航

C语言再学习——常量和变量

常量和变量

 

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

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

 

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

证:

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

{

    char c = 'c';

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

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

    return 0;

 

}

 

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

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

证:

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

{

    printf("%s\n","qian\0fang");

    return 0;

}

如上:在qian后面有\0,所以打印的时候只能打印到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\n",ch);

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

 

类型转换的规律:

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

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

如下所示:

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

    //隐式转换和显示转换

    //隐式转换

    int i = 5;

    float f = 5.33;

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

    

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

    int j = 5;

    double d = (double)j;

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

    

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

    double dou = 12.2342;

    int in = (int)dou;

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

    return 0;

 

}

 

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

posted on 2015-06-02 13:06  Beyond平君  阅读(431)  评论(0编辑  收藏  举报