IPhone SDK - 如何检测变量类型(浮点数或双精度)?

时间:2010-10-01 16:43:19

标签: iphone variables sdk types detect

如何检测变量是float,double,int等?

感谢。

3 个答案:

答案 0 :(得分:4)

Objective-C与PHP或其他解释型语言不同,变量的“类型”可能会根据您的使用方式而改变。声明时,所有变量都设置为固定类型,并且无法更改。由于类型是在编译时定义的,因此无需在运行时查询变量的类型。

例如:

float var1; // var1 is a float and can't be any other type
int var2;  // var2 is an int and can't be any other type
NSString* var3;  // var3 is a pointer to a NSString object and can't be any other type

类型在变量名之前指定,也在函数中指定:

- (void)initWithValue:(float)param1 andName:(NSString*)param2
{
    // param1 is a float
    // param2 is a pointer to a NSString object
} 

正如您所看到的,在声明变量时类型是固定的(您也会注意到必须声明所有变量,即您不能突然开始使用新的变量名,除非您先声明它)。

答案 1 :(得分:0)

在基于编译的C语言(带有符号的调试模式之外)中,除非您知道类型,否则您实际上无法“检测”任何变量,或者猜测类型并获得幸运。

通常,您知道并在任何变量引用之前声明类型。

如果没有类型信息,您可以做的最好的事情就是取消引用内存中随机未知位/字节的指针,并希望不会在非法内存引用上崩溃。

添加评论:

如果您知道该类型是合法的Objective C对象,那么您可以查询运行时以获取有关该类的其他信息等。但不能用于整数,双精度等。

答案 2 :(得分:-4)

使用sizeof。对于双倍,它将是8.浮动是4。 double x = 3.1415; float y = 3.1415f; printf(“x的大小是%d \ n”,sizeof(x)); printf(“y的大小是%d \ n”,sizeof(y));