📜  C 程序的输出 |第 51 集

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

C 程序的输出 |第 51 集

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

#include 
int main()
{
    printf("%d", printf("%d", printf("%d", printf("%s", "Welcome to geeksforgeeks"))));
    return (0);
}

选项:
1. 欢迎来到 geeksforgeeks2531
2. 欢迎来到 geeksforgeeks2421
3. 欢迎来到 geeksforgeeks2124
4. 欢迎来到 geeksforgeeks3125

The answer is option(2).

说明:众所周知, printf函数返回要打印的字符数, scanf函数返回给定的输入数。

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

#include 
int main()
{
    int x = 30, y = 25, z = 20, w = 10;
    printf("%d ", x * y / z - w);
    printf("%d", x * y / (z - w));
    return (0);
}

选项:
1. 27 85
2. 82 27
3. 27 75
4.无输出



The output is option(3).

说明:在上面的程序中,优先级占了优势。因此在语句编译器首先计算 x*y 然后 / 和减法之后。
参考:https://www.geeksforgeeks.org/c-operator-precedence-associativity/

3. 猜输出?

#include 
int main()
{
    int a = 15, b;
    b = (a++) + (a++);
    a = (b++) + (b++);
    printf("a=%d b=%d", a, b);
    return (0);
}

选项:
1. a=63 b=33
2. a=33 b=63
3. a=66 b=33
4. a=33 b=33

The answer is option(1).

解释:在这里,

a = 15 and b = (a++)+(a++) i.e. b = 15+16 = 31 and a =3 2.
Now a = (b++) + (b++) = 31 + 32 = 63 and b = 33.
Therefore the result is a = 63 and b = 33.

参考:https://www.geeksforgeeks.org/operators-in-c-set-1-arithmetic-operators/

4. 输出是什么?

#include 
int main()
{
    main();
    return (0);
}

选项:
1.编译时错误
2.异常终止
3.运行时错误
4.无输出

The answer is option(1).

说明:这里发生堆栈溢出,导致运行时错误。
参考:https://www.geeksforgeeks.org/print-geeksforgeeks-empty-main-c/

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

#include 
int main()
{
    int c = 4;
    c = c++ + ~++c;
    printf("%d", c);
    return (0);
}

选项:
1. 3
2.-3
3. 31
4.编译时错误

The answer is option(2).

说明:因为这里c++是后增量,所以它的值为4,那么它就会自增。 ++c 是预增量,因此它首先增量,并将值 6 分配给 c,.~ 表示 -6-1=-7 然后 c=(4-7)=-3。