我的Objective-C代码输出错误的圆面积,请求排查问题
代码问题分析及修复
问题1:宏定义PI存在语法错误
你定义的#define PI 3.142fat是无效的浮点数写法,末尾多了at字符,正确的单精度浮点数后缀应为f,需改为#define PI 3.142f。这个错误会导致编译器无法正确识别PI的数值,直接破坏面积计算的基础逻辑。
问题2:NSLog格式化符使用错误
NSLog(@"Area is %d", area);中,%d是用于格式化整数的占位符,但area是float类型的浮点数,应该使用浮点数对应的格式化符,比如%f(输出完整浮点数)或者%.3f(保留三位小数,匹配你预期的12.568)。用%d格式化浮点数会导致内存解析错误,输出无意义的整数。
修复后的完整代码
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; // constant #define PI 3.142f float area; int r=2; area = PI * (r*r); NSLog(@"Area is %.3f", area); [pool drain]; return 0; }
修复后输出
运行修复后的代码,会输出:
2023-xx-xx xx:xx:xx.xxxx main[xx:xx] Area is 12.568
内容的提问来源于stack exchange,提问作者eyitayoit
相关产品推荐
相关产品推荐

