《Mac平台学C(第二版)》第七章习题B、C部分结果解析求助
关于《Mac平台学C(第二版)》第七章习题的代码解析疑问
我在学习《Mac平台学C(第二版)》第七章习题时,对其中两个代码片段的运行结果无法理解,相关代码及问题如下:
Part b 代码
// the following code is part b, of question 1 int g_number; int multiply_it(int my_var); int main(int argc, const char * argv[]) { int i, g_number = 2; for (i = 1; i <= 2; i++) { g_number *= multiply_it(g_number); // printf("Global number equals: %d\n", g_number); } printf("Final value is %d.\n", g_number); return 0; } int multiply_it(int my_var) { return (my_var * g_number); }
Part c 代码
// the following code is part c, of question 1 int g_number; int double_it(int my_var); int main(int argc, const char * argv[]) { int i; g_number = 1; for (i = 1; i <= 10; i++) { g_number *= double_it(g_number); } printf("Final value is %d.\n", g_number); return 0; } int double_it(int my_var) { return 2 * my_var; }
问题说明
- 书后给出的答案中,Part b的最终值为512,Part c为1024。我能理解Part a的结果,但搞不懂这两个结果的由来。
- 教材中三个代码片段各有独立的
main()函数,我尝试注释掉其他main()合并代码运行时,Part a输出正确结果(25),但Part b输出0。 - 因为Part c和Part b逻辑类似,只要能理解Part b的运行逻辑,应该就能明白Part c,希望有人帮忙解析这两段代码的运行过程,或者指明学习方向。
内容的提问来源于stack exchange,提问作者peter
相关产品推荐
相关产品推荐

