执行下面程序段后,k的值是

执行下面程序段后,k的值是,第1张

当n=0时跳出循环 //第一次循环

k=k*325%10=1*5=5

n=n/10=32

//第二次循环

k=k*32%10=5*2=10

n=32/10=3

//第三次循环

k=k*3%10=10*3=30

n=3/10=0

n为0 退出循环

所以k最后为30 选B

要验证这类问题很简单,编个程序就行了:

#include

void

main()

{

int

a,

b,

c

a

=

b

=

c

=

1

++b

&&

++c

||

++a

printf("%d

%d

%d\n",

a,

b,

c)

}

---

结果

1

2

2

---

为什么

a

没有改变呢?这是因为

c

语言在运行逻辑表达式的时候,采用了“短路规则”或“优化策略”。

&&

||

是逻辑运算符,c

语言的规则是算到该运算符左边的时候假如结果已经确定了,就不会继续运算右边的表达式,以节省运算时间。

++b

的结果不是

0,为逻辑“真”,所以还不知道逻辑与(&&)的结果,要看

++c

的结果。

++c

的结果也不是

0,为逻辑“真”,所以

++b

&&

++c

的结果为

1(真)。

既然逻辑或(||)的左边是“真”,整个表达式的结果必定是真,所以

++a

根本没有运行。

因此,a

没有改变,b

c

都增加了

1。

---

a值为[1],b值为[2]

,c值为[2]


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11144728.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存