关于C语言数据运算的入门问题

printf("%d",3/2);结果是1,printf("%f",3/2);的结果为什么是0呢?

3/2是两个整数相除,是进行整除运算,结果为1。由于1是整数,只能用整型格式输出,包括%d,%u之类的
%f是用于输出浮点数的格式,不能输出整型,所以为0
由于直接的数字1编译器会默认为整型,写成float f = 3/2;时,printf("%f",f);才输出1.000000或者0.9999998这样子

3 / 2 结果表示整形的1,即32位int的1。
%f 把这个整形解释为浮点型,用IEEE754标准解释这个整型1 就是0.
要让结果正确可以强制类型转换

3/2整型结果为1,在32位系统里,二进制为00000000000000000000000000000001,在系统中存储的是补码,但是正数原码反码补码相同;你将整形变为浮点输出,浮点数都可表示成(-1)^s12^E,则 按浮点的规则取出最高位为s,s=0表示正数,s=1表示负数,接着是紧跟的八位代表E,计算机储存的是E+127,现在的结果为00000000,这种电脑规定直接输出(-1)^s12^(-126)该数无限接近0,取前六位结果为0.000000

3/2结果为整数,结果为1

整数的占位符是%d,所以
printf("%d",3/2);结果是1
printf("%f",3/2);结果为0,因为占位符不对。

因为3/2结果是整型,你却用%f输出