C语言 -- printf函数参数类型和打印格式不匹配

  C语言中,变量在运算或者赋值时会存在类型的自动转换。很一般的情况这里不再讨论,下面只说一下赋值和利用printf函数打印时的情况

  1.赋值时的自动转换

  int a = 1.5;

  printf("%d", a);

  输出值为1 因为1.5是一个double类型,但是在赋值为a时,由于a是一个int类型,所以将小数部分舍去,a为1

  2.printf函数中不涉及自动转换

  他只按照固定的格式打印,如果解析失败,就输出对应格式下的0

  例如:

  int a = 1;

  printf("%f",a);

  输出0.000000  因为a是int类型,用float类型就会解析失败,所以输出浮点数格式的0,即为0.000000

  

  其余的类似,如%c下解析失败输出一个空格,,