C语言数据类型转换

C语言规定,不同类型的数据需要转换成同一类型后才可进行计算,在整型、实型和字符型数据之间通过类型转换便可进行混合运算。

注意:并非所有类型的数据之间都可以进行转换,例如,指针和上述三种类型数据之间就不可以进行数据类型转换。

相同类型的数据在转换时有如下规则:如字符必定先转换为整数(C语言规定字符类型数据和整数数据之间可以同用)、short型转换为int型(同属于整型)、float型数据在运算时一律转换为双精度(double)型,以提高运算精度(同属于实型)

不同类型的数据在转换时:遵循低类型向高级类型转换的原则,

例如,int类型数据与double类型数据进行运算时,是先将int类型数据转换成double类型,然后在进行运算,结果为double类型。

此外,在赋值表达式中,右边表达式的值自动隐式转换为左边变量的类型,并赋值给她。

#include <stdio.h>

void main()
{
  //定义变量并赋初值
  int = 5;
  char c = 'a';
  float f = 5.3;
  double m = 12.65;
  double result;

  //同类型转换
  printf("a + c = %d\n", a+c);
  printf("a + c = %c\n", a+c);
  printf("f + m = %f\n", f+m);

  //不同类型转换
  printf("a + m = %f\n", a+m);
  printf("c + f = %f\n", c+f);
  
  //同类型转换
  result = a + c*(f+m);
  printf("double  = %f\n", result);

}

当整型数据和字符型数据进行运算时,结果会随输出格式说明的不同而不同,当结果以整型输出格式“%d”输出时,结果为整数,若以字符型输出格式“%c”輪出时,结果为字符。

当整型数据和双精度型数据进行运算时,C先将整型数据转换成双精度型数据,再进行运算,结果为双精度类型的数据,同样,当字符型数据和实型数据进行运算时,C先将字符型数据转换成实型数据,然后进行计算,结果为实型数据

在表达式求解时,按运算符的优先级别的高低次序执行,例如先乘除后加减。若在一个运算对象两侧的运算符的优先级别相同,那么按照“自左向右”的方向进行结合,但若在表达式中存在括号,则括号中运算的优先级别最高,最先被执行,所以程序中算式a+*(+m的运算次序为,先执行(f+m)中的运算,然后将其结果与c相乘,最后同a相加。

请注意,代码行中的“=”是赋值运算符,不属于算术运算符。赋值运算符的结合性是按照“自右向左”的规则执行的。因此,在代码行 result=atc"(ftm)中,是先得出算式a+c(f+m)的结果,而后再将此结果赋给双精度变量 result.


博观而约取,厚积而博发!


版权声明:本文为Taqingjie原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。