0
点赞
收藏
分享

微信扫一扫

面试题 安卓嵌入式

kolibreath 2022-04-23 阅读 78
面试

1.printf 的压栈问题

#include <stdio.h>

void main()
{
    int a = 9;
    printf("%d %d %d %d\n",++a,a++,a++,++a);  //从右往左入栈  即先右边的++a到左的++a

    /*
    结果:13  11  10  13
    规则:
        1. 先从右向左运算完再  依次输出
        2. ++a  直接运算  并返回内存  输出的结果是最后运算出来的内存值 即a+1+1+1+1 = 13
        3. a++  先保存一个副本,副本每次都是新建的   输出的新建副本值
    
    运算顺序:
        1.++a   memory_a = 10
        2.a++   temp1_a = 10; memory_a = 11
        3.a++   temp2_a = 11(步骤2的memory_a); temp1_a = 10; memory_a = 12(建了temp2_a后,继续+1)
        4.++a   temp2_a = 11; temp1_a = 10; memory_a = 13

        输入替换:
        printf("%d %d %d %d\n",memory_a,temp2_a,temp1_a,memory_a);13 11 10 13 
    */
}
举报

相关推荐

0 条评论