C语言程序设计两道题 两题每句语句的意思 尽可能的详细

1个回答

  • main()

    {

    int a=5,b=-1,c;

    c=adds(a,b);//调用函数adds 传递实参a,b 传递过去相当于x=a y=b,返回值赋给c

    printf("%d",c);//1.c=2

    c=adds(a,b);//在调用一次函数

    printf("%dn",c);//2.c=3

    }

    int adds(int x,int y)

    {

    static int m=0,n=3;//我想考的知识点就是这里 静态局部变量 这个就相当于全局变量 但是作用范围只在这个调用函数中 用完之后值是不释放的 而且在整个程序中只定义一次

    n*=++m;//等价于 n=n*(m+1) 1.n=3*(0+1)=3 ++m是先加再使用 此时变了m=1 n=3 2.m=2 n=3 n=3*(2+1)=9

    m=n%x+y++;//y++是先使用后再加 1.m=n%x+y=3%5+(-1)=2 m变为2 2. m=9%5+(-1)=3

    }

    所以答案选A

    第二题主要考的是宏定义,宏定义 只要明确一点 复制粘贴替换而已

    这个程序执行f(a)/f(b) 就是讲a与b先递给x c=f(a)/f(b) 相当于 c=a*a/b*b;宏定义是不进行运算的 就是简单的替换 因为没加括号的原因 *和/是同等级别的 所以从左往右计算c=6*6/2*2=36