什么应该是输出:(为什么?)
printf("%d",2.37);
显然,printf 是一个可变参数函数,我们永远无法知道可变参数列表的类型。所以我们总是必须手动指定格式说明符。 因此,根据 IEEE 标准,2.37 将存储为 double,将以整数格式获取和打印。 但是输出为0。 这是什么原因?
最佳答案
这是未定义的行为。您正在将一个 double
参数传递给一个函数,该函数期望从其可变参数宏中检索一个 int
,并且根本不知道这将导致什么。理论上,它甚至可能会崩溃(使用指定不同类型的可变参数以不同方式或在不同堆栈上传递的调用约定)。
关于c - 输出预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7097156/