-
很容易理解,传递给函数 f 的 a 值始终是 2,但现在关键是 b 和 c 的值。
对于 b,它是 f() 函数中的局部变量,因此每次调用它时,其初始值为 0
执行 b++ 后变为 1,每次计算 a+b+c 时为 1
对于 c,它是 f() 函数内部的一个局部静态变量,也就是说,它的范围仅限于 f() 函数内部,但由于其静态变量的特性,它只初始化一次,即编译时初始化,初始值为 3,以后每次调用 f(), 它不会再次初始化,它的值存储在静态区域,下次调用 f() 时,它将继续使用保存在静态区域的值。
所以第一次调用 f() 来执行 c++,它的值变为 4,结果是 2+1+4=7
第二次调用 f() 执行 c++,之前,它的值是 4(存储在静态区域不会因为函数的结束被系统**),累加是 5,结果当然是 2+1+5=8,第三次和第二次类似,所以结果是 9
关键是要理解静态变量的含义,静态变量存储在内存的静态区域,在编译器编译时只初始化一次,运行时不会再次初始化。
朋友,请【回答】,你的是我回答问题的动力,如果你不明白,请问。 谢谢。
-
你好,唯一要注意的是,函数f中的c是一个静态变量,第一次调用是3,更改后的值会被保存并影响后续调用,第二次是4,第三次c=5; 所以输出 7、8、9
-
从右到左计算,结果为 0。
首先计算最左边的结果是-2,x=10%(-2)余数运算,结果为0,即此时x已经为0,然后执行x+=0,相当于x=x+0,结果为0。
-
p=a[1]+1;
是 *p=&a[1][1];
*a 是 &a[0][0];
因此,p-*a 是 a[1][1] 和 a[0][0] 之间的差值,即 3+1=4
-
当 fun(4, 1) 第一次执行时,m=0 且 i=2
执行 i+=m+1,i = 2+0+1=3;
m=i+a+b:m=3+4+1=8
当 fun(4, 1) 第二次执行时。
m=8, i=3;(静态变量只初始化一次,所以它仍然是最后一个值)。
执行 i+=m+1,i=3+8+1=12
m=i+a+b,执行后,m=12+4+1=17,所以结果是8和17
-
77 分(满分 A)。
int) 是指对 int 的强制转换,即只保留整数部分,即 2。
满分 78 分。 3 2 的值为 1,因为两个整数被除法,结果仍然是整数。 由于 x 和 y 是 double 类型,因此 x 实际上是 ,所以 y=。
-
按优先级,首先计算 3 2
是一个整数,结果是一个整数,3 2=1
再次计算 x+1,x 是 double 类型,结果是 double 类型。
Y 是双精度类型,Y = C
-
由于 3 2 部分是整数运算,结果是 1,加上原来的 1(即 2,为了反映双精度类型,答案是。
-
(3 < 2) |1) &4 > 3 - 0)))
三个关系语句。
第一个(3 < 2)是假的
第二个 (-1) 为真
第三场 (4 > 3 - 0)))即 (4 > 3 - 1)),为真
所以表达式是假的||true &&True,结果为 true,即 1
这个问题本身有问题。
结果没有初始化,没有指向任何空格就传递给add函数,这本身就是错误的,当然也可以实现,在add函数中申请一个地址来存储结果,并将地址发回给结果,但是该地址的**是无法控制的, 容易造成内存泄漏。 >>>More
1、尽量保持良好的心态,避免烦躁,学会克服。 2、加强与同学的合作,多讨论问题,多想办法解决问题。 3、打好基础,打好基础,注重基础理论的学习,不要野心勃勃。 >>>More