📜  C 程序的输出 |第 53 集(运营商)

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

C 程序的输出 |第 53 集(运营商)

先决条件: C 中的运算符

1. 下面的输出是什么?
#include 
int main(void)
{
    int a;
    int b = 1;
    int x[5] = { 1, 2, 3, 4, 5 };
    a = 5 * 4 + x[--b] - (9 / b);
    printf("%d", a);
    return 0;
}

选项:
1. 12
2. 异常终止
3. 21
4. 无输出

The answer is option(2).

说明:这里方括号的优先级最高,这就是它首先被评估的原因。在那之后括号享有优先权,但我们有错误,因为在我们除以 9/0 时发生浮点异常。

2. 下面的输出是什么?



#include 
int main(void)
{
    int a;
    int b = 1;
    int x[5] = { 1, 2, 3, 4, 5 };
    a = 5 * 4 + x[b++] - (9 / b);
    printf("%d", a);
    return 0;
}

选项:
1. 12
2. 20
3. 18
4. 无输出

The answer is option(3).

说明:这里方括号具有最高优先级,这就是它首先被评估的原因。之后括号优先。现在a=5*4+x[b++]-(9/b)=18。
参考:www.geeksforgeeks.org/c-operator-precedence-associativity/

3. 下面的输出是什么?

#include 
int main(void)
{
    int a;
    int i = 1;
    int b = 10 * i + sizeof(--i) + 4 - 10 / i;
    printf("%d", b);
    return 0;
}

选项:
1. 4
2. 2
3. 6
4. 8

The answer is option(4).

说明:这里 sizeof()运算符享有最高优先级,结果为 4。但在 sizeof()运算符内部无法进行评估。

4. 下面的输出是什么?

#include 
int main(void)
{
    int a = 9;
    float x;
    x = a / 2;
    printf("%f", x);
    return 0;
}

选项:
1. 4.000000
2. 0
3. 4
4.无输出

The answer is option(1).

解释:这里 9/2 是 4。然后 4 被分配给浮点数,它变成 4.000000。

5. 下面的输出是什么?

#include 
int main(void)
{
    int a = 9;
    float x;
    x = (float)a / 2;
    printf("%f", x);
    return 0;
}

选项:
1. 4.000000
2. 4.50
3. 4
4. 4.500000

The answer is option(4).

说明:在类型转换的帮助下,我们能够得到准确的结果。
参考:https://www.geeksforgeeks.org/type-conversion-c/