📜  C 程序的输出 |第 49 组(运营商)

📅  最后修改于: 2022-05-13 01:56:10.852000             🧑  作者: Mango

C 程序的输出 |第 49 组(运营商)

Perquisite : C 中的运算符

1.以下程序的输出是什么?

#include 
int main(void)
{
    int i = 40 >> 5 << 3 >> 2 << 1;
    printf("%d", i);
    return 0;
}

选项:

1. 4           2. 0
3. 40          4. 1
Answer : (1)

说明:答案是选项(1)。这里首先 40 >> 5 表示 40 / 32 即 1,然后 1 2 带来 2,然后 2 << 1 变成 4。
有关详细信息,请参阅位移运算符

2.以下程序的输出是什么?



#include 
int main(void)
{
    int i = 10 > 9 > 7 < 8;
    printf("%d", i);
    return 0;
}

选项:

1. 1           2. 20
3. 10          4. 0
Answer : (1)

说明:答案是选项(1)。这里 10 > 9 返回 1,然后 1>7 返回 0 然后 0<8 返回 1。

3.下面程序的输出是什么?

#include 
int main(void)
{
    int x = 4, y = 4, z = 4;
    if (x == y == z) {
        printf("Hello");
    } else {
        printf("GEEKS");
    }
    return 0;
}

选项:

1. Hello           2. 0
3. 1               4. GEEKS
Answer : (4)

说明:答案是选项(4)。这里 x == y 比较给出 1,返回的 1 与 z 进行比较,z 为假并返回 0。因此它打印 GEEKS。

4.以下程序的输出是什么?

#include 
int main(void)
{
    int x = 10, y = 15;
    x ^= y ^= x ^= y;
    printf("%d%d", x, y);
    return 0;
}

选项:

1. 44                  2. 1510
3. 55                  4. 45
Answer : (2)

说明:答案是选项(2)。在上面的例子中,x 和 y 使用复合赋值运算符在单行语句中互换,其计算顺序是从右到左。因此,值 y 与 x 异或并将结果分配给 x(即 x=15)。在第二个复合赋值运算符, 5 与 y 进行异或运算,结果赋值给 y(即 y=5)。最后,y 再次与 x 异或,结果分配给 x,x 变为 10。因此,两者交换。

5.以下程序的输出是什么?

#include 
int main(void)
{
    int a;
    int i = 4;
    a = 24 || --i;
    printf("%d %d", a, i);
    return 0;
}

选项:

1. 1 4           2. 4 4
3. 4 1           4. 1 1
Answer : (1)

说明:答案是选项(1)。这里的 24||–i 返回 1 因为逻辑 ||如果任何一个条件为真,运算符返回 1,并且当第一个条件返回真时不计算 –i。