为什么-5/2的结果打印为0?
你能说出为什么 C 中的这个语句给出 0 作为输出吗?
printf("Hello %f",-5/2);
然而
printf("Hello %d",-5/2);
将输出作为 -2
回答
两个整数的除法产生一个整数结果(int在这种情况下)。该%f格式说明期望类型的参数double。对给定的参数使用错误的格式说明符会触发未定义的行为,在这种情况下会产生错误的结果。
如果你想要一个浮点结果,至少一个操作数/必须是浮点类型,即
printf("Hello %f",-5.0/2);