如何检测变量是float,double,int等?
感谢。
答案 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));