📜  C 程序的输出 |第 58 集(运算符)

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

C 程序的输出 |第 58 集(运算符)

先决条件: C 中的运算符

Q.1 这个程序的输出是什么?

#include 
using namespace std;
int main()
{
    printf("value is = %d", (10 ++));
    return 0;
}

选项
一)10
b) 11
c) 编译时错误
d) 运行时错误

ans: c

说明:作为增量运算符所需的左值仅对变量而不是常量值进行操作。

Q.2 这个程序的输出是什么?



#include 
using namespace std;
int main()
{
    int i = 0, j = 1, k = 2, m;
    m = i++ || j++ || k++;
    printf("%d %d %d %d", m, i, j, k);
    return 0;
}

选项

a) 1 1 2 3
b) 1 1 2 2
c) 0 1 2 2
d) 1 2 3 3

ans:- b

说明:一旦表达式的值在 OR 中为真,后面的表达式将不会被计算,因此 j = 1 被分配给 m 。

Q.3 这个程序的输出是什么?

#include 
using namespace std;
int main()
{
    int y = 10;
    if (y++ > 9 && y++ != 10 && y++ > 11)
        printf("%d", y);
    else
        printf("%d", y);
    return 0;
}

选项
一)11
b) 12
c) 13
d) 以上都不是

ans: c

说明 : and运算符(&) 被使用,所以即使第一部分为真,整个表达式也会被评估。

Q.4 这个程序的输出是什么?

#include 
using namespace std;
int main()
{
    int i = 10;
    i = !i > 14;
    printf("i=%d", i);
    return 0;
}

选项
a) i=1
b) i=0
c) i=10
d) 这些都不是



ans:- b

说明:非操作符(!) 的优先级高于运算符(>),因此 0>14 的计算结果为 false。

Q.5 这个程序的输出是什么?

#include 
using namespace std;
int main()
{
    int a = 3, b = 5, c, d;
    c = a, b;
    d = (a, b);
    printf("c=%d d=%d", c, d);
    return 0;
}

选项
a) c=3 d=5
b) c=5 d=5
c) 无法确定
d) 这些都不是

ans : a

说明: '(' 的优先级比 ', ' 更大,所以首先在 c 中分配 a,然后在 d 中分配 b。

Q.6 这个程序的输出是什么?

#include 
using namespace std;
int main()
{
    int y = 10;
    if (y++ > 9 && y++ != 11 && y++ > 11)
        printf("%d", y);
    else
        printf("%d", y);
    return 0;
}

选项
一)11
b) 12
c) 13
d) 14

ans: b