vlambda博客
学习文章列表

c语言常量和类型转换

c语言

06

1常量


常量就是程序执行过程中不发生改变的量


常量分为整型常量、实型常量、字符常量和字符串常量


可以参考之前的变量,如整型1:1  实型:1.1  字符:a  


字符串:"apple"


常量的输出方式和变量是一样的


字符串的输出是:    printf("apple");


常量的定义格式是:  #define 标识符 常量值


比如  #define A=1;


变量的值在程序运行中是可以被修改的,而常量不可以被修改


变量的标识符一般用小写字母,常量用大写字母,加以区分


2自动类型转换


不同数据类型运算的时候,可以在编译中自动完成类型转换的就是自动类型转换


字节小的类型可以向字节大的类型自动转换


但是字节大的不能像字节小的自动转换


字节小的类型就像一个小瓶子,字节大的类型就像一个大瓶子


小瓶子能装的,大瓶子也可以。但是大瓶子能装的,小瓶子不一定可以


自动转换遵循以下规则:

1、若参与运算量的类型不同,则先转换成同一类型,然后进行运算。


2、转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。


a.若两种类型的字节数不同,转换成字节数高的类型


b.若两种类型的字节数相同,且一种有符号,一种无符号,则转换成无符号类型


3、所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。


4、 char型和short型参与运算时,必须先转换成int型。


5、在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。


6、char类型数据转换为int类型数据遵循ASCII码中的对应值6


       


3强制类型转换


格式   (数据类型) (表达式)  

 比如num是一个double类型强制类型转换就可以这样输出


printf("num的整数部分是%d\n", (int)num);


强制类型转换表达式式的时候要加括号


比如想转换x+2  就要 (int)(x+2)


转换后不改变原数据类型,只是在本次运算的的时候临时转换


4练手


#include <stdio.h>

int main()

{

    int a = 5;

    char c = 'a';

    float f = 5.3;

    double m = 12.65;

    double result;

 

    printf("a + c = %d\n", a+c); // 102

    printf("a + c = %c\n", a+c); // f

    printf(" f + m = %f\n",f+m); //17.950000

 

    printf("a + m = %f\n", a+m); // 17.650000

    printf("c + f = %f\n", c + f); //102.300000

 

    result  = a + c* (f+m);

    printf("double = %f\n",result); // 1746.150019

 

    return 0;

}

       

           


练习来自为CSDN博主「matdodo」的原创文章,大家可以点击阅读原文查看