C语言题:求结果,给出解释

2024-12-12 03:47:28
推荐回答(5个)
回答1:

A.a*=a-2等价于a=a*(a-2)=4*(4-2)=8
B.a--,3*a-1,计算a--,a=3,3*a-1=8,逗号表达式值等于逗号右侧的值
C.a>1成立表达式的值为:左侧的值,即++a*2=5*2=10(++优先级高于*)
D.a+--a=--a的值为3,a+--a=3+3=6
答案CD

回答2:

选择CD


就是考察运算符优先级。


C:

a>1?++a*2:3*a    

为 ++a*2 

++a为5, 并且返回5

5*2 = 10


如果是 a++*2则返回8



D:

a+--a ==> a + (--a)


实现计算 --a, a为4, --a后 a为3, 并且(--a)返回计算后的结果也为3


a + (--a) ==>  3 + (3) = 6

#include 

int main(void)
{
    int a = 4;
    int b = 0;

    b = a+--a;
    printf("a = [%d]\n", a);
    printf("b = [%d]\n", b);

    a = 4;
    b = a > 1 ?  ++a*2 : 3 * a;
    printf("a = [%d]\n", a);
    printf("b = [%d]\n", b);

    return 0;
}

a = [3]

b = [6]

a = [5]

b = [10]

回答3:

答案是C,结果是10,++的优先级高于*
D,结果是6
其他都是8

回答4:

怎么感觉 CD都是呢。。。完了迷糊了。。。

回答5:

在线讲解c语言