You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

《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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 13:42:47