假设x是一个整数并且已经初始化为某个值。考虑代码
for (int a = 1; a < 20; a++)
if (x < 0)
x = a;
哪个陈述对x的值有相同的影响?
一个。 if (x < 0) x = 1;
湾 if (x < 20) x = 19;
角 if (x < 0) x = 19;
d if (x < 20) x = 20;
例如 x = 1;
对于这个问题,我对问题的内容感到有点困惑,因为答案不是我所期待的。
我选择了答案选项 b。 if (x < 20) x = 19;
因为19小于20而其他答案选项在插入&#39; x&#39;时是错误的。这个问题的答案实际上是 a。 if (x < 0) x = 1;
。我很困惑为什么答案选择 a。就是答案。
答案 0 :(得分:1)
答案是答案。如果x
小于0,则循环将在第一次迭代中将{1}分配给x
。如果x
已经大于0,则后续迭代将无效,因为两个方法都不会改变x
的值。
答案 1 :(得分:0)
如果x
已初始化为5(或任何大于0) - 那么该语句永远不会成立。例如:
int x = 3;
for (int a = 1; a < 20; a++)
if (x < 0)
x = a; // never reached
如果x
被初始化为小于0的任何值,则该语句将仅评估一次,x将等于1.因为在第二次迭代时:
if(1 < 0)
为false
,因此永远不会再分配x。
int x = -5;
for (int a = 1; a < 20; a++)
if (x < 0)
x = a; // reached once only - x == 1
答案 2 :(得分:0)
假设x未初始化,那么在第一个循环中,只有在小于0的情况下才会分配x。在第一个循环中a = 1,因此x将被分配给1,之后再也不会,因为1> 0