设整型变量i,j的值是5,则表达式(m=n=i++)⼀(n=j-2)的值是什么?

2024-12-03 15:34:46
推荐回答(4个)
回答1:

这同编译器的处理方法有关。
按语法,
int
n,i;
printf("%d
\n",
(n=i=2,++i,i++)
);

3。
计算顺序:
这是逗号表达式,逗号表达式的结果

最右面一个表达式的结果。
(1)n=i=2;
n得2,i得2
(2)++i;
前缀加,表达式里要
先增1再使用,i

3
(3)i++;
后缀加,表达式里用原值,出了表达式后才增1。所以
i
不变,等于
3。
逗号表达式
的结果

最右面一个表达式的结果,也就是
(3)的结果。
所以
答案

3,不是
5

回答2:

i++是先在表达式使用i的原值,然后再让i+1;
++i是先使i=i+1然后再使表达式加上i(现在是6了)的值。
所以上述表达式的值为:5/3(这里要看m,n的类型。如果是int则值为1,double类型的值为1.667)

回答3:

顺序:n=i=5,
i=6
,m=n=5
,
(m=n=i++)就是5

j不变5,n=3,
所以
n=3,m=5
,
i=6,
j=5
,最后1,因为两整除,只保留整数部分,所以1.
结果为1

回答4:

在G++
3.4.2中运行结果为1。
赋值不影响该表达式的值。故表达式
=
5
/
3
=
1。