C语言输出结果有问题

img

img

img

img


将输出改为%d以后输出变为零,我希望输出结果是5,输出是%lf时结果是正确的,不清楚问题出在哪里

你应该回去复习计算机原理
double型占8字节,它的二进制是如何存储的
int型占4字节,它又是如何存储的
c语言比较古老,printf函数里它不会去识别你传入的变量是个什么类型,它只看你传入的参数是%d就按int型4字节输出,传入%lf就按double型8字节输出,后面的变量只提供地址

最后输出改为:printf("%d\n", (int)n / 8.0); 强制类型转换试试。