首页 > 试题广场 >

执行下面语句:

[单选题]
执行下面语句:
int a[4] = { 0 };
for(int i=0;i<4;++i){
    if(i&1){
        a[i]=1;
    }
}
则a数组中的值为()
  • 1 1 0 1
  • 1 0 0 1
  • 0 1 0 1
  • 1 1 1 1
判断奇偶,奇数为1
发表于 2021-03-15 19:33:48 回复(0)

for循环的执行顺序用如下表达式:

for(expression1;expression2;expression3)
 {
    expression4;
}

1)第一次循环,即初始化循环。

首先执行表达式expression1(一般为初始化语句);
再执行expression2(一般为条件判断语句),判断expression1是否符合expression2的条件;
如果符合,则执行expression4,否则,停止执行;最后执行expression3。
2)第N(N>=2)次循环

首先执行expression2,判断在expression3是否符合在expression2要求;
如果符合,则继续执行在expression4,否则,停止执行。最后执行在expression3。
如此往复,直至expression3不满足在expression2条件是为止。
本题执行顺序为:

  1. i=0; => 0&1 = 0; => a[0]=0;
  2. i=1; => 1&1 = 1; => a[1]=1;
  3. i=2; => 2&1 = 0x10 & 0x01 = 0; => a[2]=0;
  4. i=3; => 3&1 = 0x11 & 0x01 = 0x11; => a[3]=0;
发表于 2020-11-14 12:15:43 回复(5)
位运算 0&1 =0 1&1=1 2&1=0x10&0x01=0 3&1=0x11&0x01=0x11
发表于 2020-08-14 18:35:09 回复(1)
看了评论区的解析 还是不懂😅😅
发表于 2021-11-19 14:57:42 回复(0)
看到评论区有不同意见,但我的想法是 数字的位运算,同位为1才为1,所以 0&1 =0 1&1=1 2&1=0x10&0x01=0 3&1=0x11&0x01=0x01=1 if的条件非0为true,所以才选C
发表于 2022-08-10 23:18:18 回复(1)
位运算 0&1 =0 1&1=1 2&1=0x10&0x01=0 3&1=0x11&0x01=0x11
发表于 2022-06-02 20:44:53 回复(1)
if(i&1) 目的是判断i的奇偶性。
为什么奇偶性可以这么判断?
如果把每个整数用二进制表示,每个偶数的最后一位都是 0,每个奇数的最后一位都是 1。
发表于 2022-03-07 18:58:25 回复(0)
按位与运算:3&1=0x11&0x01不是等于0x01吗?为啥是0x11?按位运算还有进位的说法?
发表于 2021-05-12 20:27:44 回复(1)

if(i & 1)利用了位运算的性质来检查一个整数i是否为奇数。在二进制表示中,一个整数的最低位为 1 表示它是奇数,为 0 表示它是偶数。

二进制中,最低位是指二进制表示的最右边的一位。在二进制表示中,奇数的最低位总是1,偶数的最低位总是0。

因此,当你使用i & 1时,它实际上是在检查i的二进制表示的最低位。如果最低位是1,那么结果就是1,表示i是奇数;如果最低位是0,结果就是0,表示i是偶数。

这是一种非常快速和有效的方法来判断一个整数的奇偶性,因为它直接利用了二进制的特性。

编辑于 2023-12-01 22:33:06 回复(0)
应该是if括号里为非零的a[i]就是1,i&1当i为1,3时输出为非零
发表于 2022-11-05 16:43:37 回复(0)
i=0:0&1=0000 0000&0000 0001=0
i=1:1&1=0000 0001&0000 0001=0000 0001=0x01=1
i=2:2&1=0000 0010&0000 0001=0
i=3:3&1=0000 0011&0000 0001=0000 0001=0x01=1

发表于 2022-09-14 11:06:42 回复(0)
&是与运算 i&1的意思是i的机器数的最低位与1作与运算,由于i的奇偶性只和其二进制的最低位有关,故可用来判断奇偶性
发表于 2022-03-11 19:44:11 回复(0)
if(i&1)是什么条件啊?
发表于 2022-02-28 14:17:16 回复(0)
怎么把那四个数放进数组的
发表于 2021-08-21 15:45:05 回复(0)