C语言的一道题。 这道题怎么算啊? x*=x+1怎么个运算过程。 还有for语句中i<x中的x会变

C语言的一道题。这道题怎么算啊?x*=x+1怎么个运算过程。还有for语句中i<x中的x会变化吗?... C语言的一道题。
这道题怎么算啊?
x*=x+1怎么个运算过程。
还有for语句中i<x中的x会变化吗?
展开
 我来答
coolfainter
2015-02-28 · TA获得超过354个赞
知道小有建树答主
回答量:229
采纳率:100%
帮助的人:233万
展开全部
这个题对初学者还是有一定的难度。考察点应该就在 值域 的概念的考察。
代码第二行的int x=3;这里声明了一个全局变量x。
main函数的范围内,使用的x,也就是第二行声明的x,这里x=3.
在incre函数中,这里声明了一个static的x,表示在incre函数的执行期间,x是一个静态变量,为了和第二行的x分别开,这里将其用另外一个名字x2代替,所以整个程序执行是这样的:
首先从main函数开始执行for循环,开始i=1,i小于x,即3,所以执行incre函数,在incre函数中,x2*=x2+1,展开就是 x2=x2*(x2+1),所以x2=1*(1+1)=2,下一行打印出x2的值2.
然后执行i++,继续循环,i=2,仍然小于x,即3,所以继续执行incre函数,执行时因为x2是static变量,仍然保持上次执行完incre函数后x2的值,所以x2=x2*(x2+1) = 2*(2+1)=6,所以结果是26,。
追问
不能再赞,好人一生平安
whizer
2015-02-28 · 超过16用户采纳过TA的回答
知道答主
回答量:82
采纳率:0%
帮助的人:50.1万
展开全部
x *= x + 1 就是 x = x * (x + 1).
x 不会变化.

这道题主要考你, 全局变量和局部静态变量的作用域.
追问
算不出来正确答案啊,不会算
追答
for 循环中的x不会变化, 但是函数incre中的x会变化啊. 因为它是静态的.

incre 函数
第一次循环: i = 1 x =1 / 执行 x *= x+1后, x=2 输出2
第二次循环: i = 2 x = 2/ 执行 x *= x+1后, x=6 输出6

结果是26
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-02-28
展开全部
答案是26
x*=x+1先做等号右边的运算,然后乘上等号左边的变量的值,最后把结果付给等号左边的变量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wuqing0312
2015-02-28 · TA获得超过311个赞
知道小有建树答主
回答量:220
采纳率:0%
帮助的人:221万
展开全部
结果为26
i<x中的x是全局变量的值x=3

而输出的x,则是static x=1中的x

这个有一个原因,默认最靠近代码定义的变量有效
追问
26我咋算不出这个结果啊?
追答

void incre()

{

    static int x=1;

    x *= x+1;

    printf("%d", x);

}


  1. main函数里可以确认incre()会被调用两次

  2. 第一次调用incre()时,static int x=1;调用结束x=2,输出到屏幕上2

  3. 第二次调用incre()时,static int x=2;调用结束x=6,输出到屏幕上为6。因为输出中间没有其他输出,所以最终在屏幕上看到的是:26


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式