ObjectiveC与iOS中%d的不同处理

ObjectiveC与iOS中%d的不同处理,ios,string,floating-point,formatting,integer,Ios,String,Floating Point,Formatting,Integer,第一个问题。查看常见问题,但未找到答案 我用Kochan的书学习了Obj C,他将%I分类为整数,将f分类为浮点,将d分类为双精度 使用iOS时,似乎整数是:%i和%d,浮点是%f 有人能证实并解释一下理由吗。我已经看过苹果的字符串编程指南了 提前感谢您。下面是详细信息。因此%d和%i都是“有符号整数”,%f是“十进制浮点”,将显示浮点或双精度 在不确定为什么d和i被复制的情况下,%f进行浮点和双精度运算的原因是,通过省略号传递的内容受C升级规则的约束。如果传递任何小于int的整数类型,它将被提

第一个问题。查看常见问题,但未找到答案

我用Kochan的书学习了Obj C,他将%I分类为整数,将f分类为浮点,将d分类为双精度

使用iOS时,似乎整数是:%i和%d,浮点是%f

有人能证实并解释一下理由吗。我已经看过苹果的字符串编程指南了

提前感谢您。

下面是详细信息。因此%d和%i都是“有符号整数”,%f是“十进制浮点”,将显示浮点或双精度


在不确定为什么d和i被复制的情况下,%f进行浮点和双精度运算的原因是,通过省略号传递的内容受C升级规则的约束。如果传递任何小于int的整数类型,它将被提升为完整大小的int进行传递。类似地,如果传递一个float,它将被提升为double。因此,接收参数的对象只需要考虑整数与浮点,而不是存储大小。

float
值作为
double
传递,因此
%f
实际上是
double
。感谢您的帮助。这回答了我的问题。