{ int a=2,i; for(i=0;i<3;i++) printf("%d",f(a));}还有答案中又得有空格的是杀????????????????
答案 : 7 8 9
过程
此题考查静态局部变量 加了static的静态局部变量在函数调用以后内存没有释放(因为static修饰的局部变量内存分配在全局区(也叫静态区),未使用static关键字修饰的局部变量内存分配在栈区(栈区的生命周期是函数结束之后)),因为c被static关键字修饰,所以下次进入此函数,c的值是上次修改以后的。但是普通的局部变量,如题b每次调用以后释放内存,下次调用是都是初始化为初值.
在main函数中
第一次调用f(a) f函数内的变量 b = 1, c = 4, a = 2 返回值就是7
第二次调用f(a) f函数内的变量 b = 1, c = 5(静态局部变量) a = 2 返回值8
第三次调用f(a) f函数内的变量 b = 1, c = 6(静态局部变量) a = 2 返回值9
空格问题 如果main函数的输出函数是printf("%d", f(a)); 则没有空格如果main函数的输出函数是printf("%d ", f(a)); 则有空格(注意区别,在%d后有空格)
过程加解析,还有789中间有空格吗?
追答过程:#include<stdio.h>int f(int a){int b=0;static int c=3;b++;c++;r...
答案 : 7 8 9 过程 此题考查静态局部变量 加了static的静态局部变量在函数调用以后内存没有释放(因为static修饰的局部变量内存分配在全局区(也叫静态区),未使用static关键字修饰的局部变量内存分配在栈区(栈区的生命周期是函数结束之后)),因为c被static关键字修饰,所以下次进入此函数,c的值是...
...b=0;static int c=3; b++;c++; return(a+b+c); } void main() {...
答案是789,如果你在输出里面加上一个空格的话就是 7 8 9,完。
...b=0; static int c=3; b++; c++; return a+b+c; } main() { int...
include"stdio.h" int f(int a) {int b=0; static int c=3; b++; c++; return a+b+c; } main() {int a=2,i; for(i=10;i<13;i++) printf("%4d",f(a));}运行程序后,输出 7 8 9在每次调用f()函数时,b会每次都赋初值为0,然后再加1;而c是“静态变量”,...
...int a) { int b=0; static int c=3; a=(c++,b++); return (a...
a=(c++,b++);由于(c++,b++)中用了逗号,逗号作为运算符时返回最后的表达式值,所以这句相当于a=b++,由于++在后,所以这又相当于a=b;所以返回0
...f(int a) { int b=0; static int c=3; a=c++,b++; return(a); }...
首先f函数中的c是一个静态变量,生命周期是全局的,这里c的3是以初值形式赋予的,所以只有第一次执行f()的时候赋为3,所以执行循环的时候:i=0时,a=2,先取值后++,f(2),a=3;f函数内a=c++,先取值后++,a=3(这个a的作用于在函数f内,不影响外部的a),c=4,最后的a被return给k;k=...
#include <stdio.h> int f(int a) { int b=0; static int c=3; a=c...
<stdio.h> int f(int a){ int b=0;static int c=3;\/\/静态变量,只做一次初值赋值,即:第一次调用fun c=3 a=c++,b++; \/\/第一次调用本函数后,c=4,第二次后,c=5,第三次后c=6...return a; \/\/第一次调用本函数后,a=3,二次后,a=4,第三次后a=5...} ...
fun函数问题
include <stdio.h>int fun(int a){int b=0;static int c=3;a=(c++,b++); \/\/整体为逗号最右边的值,【即 b==0 赋值给a , b再自增为1】return(a);}main(){int a=2,i,k;for(i=0;i<2;i++)k=fun(a++); \/\/每一次调用,不管实参 a 的值是多少,形参 a 的值取 ...
int f(int a) {int b=0; static int c=3
对于主函数, 循环执行3次, 每次调用函数f的参数都是a=2. 即调用三次f(2) 打印返回值。对于函数f。 调用三次, 每次都是参数a=2, 三次参与a+b+c运算时都是a=2 b是局部变量, 每次初始化为0,之后自加为1。三次参与a+b+c运算时都是b=1 c是静态变量, 每次是上次退出值。 每次调用...
...#include <stdio.h> main() { int a=0,b=0,c=0,d=0; (a++ && b+...
得到结果为假(由于是后置自增运算符,所以a在判断的时候为0,判断之后为1)。&&运算中,只要有一个条件为假,则整个条件为假,所以程序不再判断b++这个条件,并且将(a++&&b++)这个条件判定为假。所以程序执行冒号后面的d++。所以a=1,b=0,c=0,d=1。所以答案选D ...
#include<stdio.h> void f(int i) { int a=2; a=i++; printf("%d,",a...
函数f(c);是值传递,不改变参数c的值。