首页 > 试题广场 >

有变量int i = 0; int a = i++; int

[单选题]
有变量int i = 0; int a = i++; int b = ++a; int c = a+b; int d = (a == 1)?b:c; 请问a和d的值分别是多少?(    )。
  • 2,4
  • 1, 4
  • 1, 2
  • 1,1
int i = 0; //i=0
int a = i++; //a=i,a=0,i++,i=1
int b = ++a; //a++,a=1,b=a,b=1
int c = a+b;//c=2
 int d = (a == 1)?b:c;//a==1,d=b,d=1 
综上a==1, d==1
发表于 2020-08-04 21:04:01 回复(0)
我在理解i++和++i有问题, 我试着把自己的想法写下来
i++是先执行其他的操作然后在执行i加一
++i是先执行i加一的操作, 然后再执行其他的操作
int a = i++; 意思是现将i赋值给a, 然后i加一, 故a = 0, i=1
int b = ++a; 意思是a先加一然后在将a赋值给b; 故a = 1, b = 1
其他的就没有难度了
发表于 2020-02-14 23:45:56 回复(3)
public class MyClass {
    public static void main(String args[]) {
        int a=1;
        int b=1;
        int y = a++;
        int z = ++b;

        System.out.println("y="+y);
        System.out.println("z="+z);
    }
}
输出结果是  
y=1
z=2

分析:  
y = a++   先执行 y =a,后执行 a = a+1 ,即 y =1
z = ++b   先执行 b = b+1 后执行 z = b,即 z = 2
发表于 2019-04-18 21:18:08 回复(2)
权威来了,记住MC枫少的口诀:
b=a++在后,则先把自身的值给b,之后本身再加1
b=++a在前,则自私一点,先自身加1,再赋值给b
评论版权所有,如有雷同,必定其盗用MC枫少的口诀产权。
发表于 2022-06-11 16:07:07 回复(2)
int i = 0;
int a = i++;//a = 0; i = 1;
int b = ++a;//a = 1;b = 1;
int c = a+b;//c = 2;
a==1?b:c//true,所以选b,d = b = 1;
所以a = 1,d = 1

发表于 2021-11-27 14:17:58 回复(0)
请问楼上,谁告诉你三目运算符优先级低于赋值运算符的?嗯?有趣。
发表于 2019-11-14 19:45:19 回复(0)
发表于 2021-12-10 10:10:54 回复(0)
答案选D.
先判断a,a只经历过一次++操作,所以a最后为1
int b=++a,++a是一个表达式,回返回a自增之前的值,a自增前为1,所以b接收到的值为1
判断到a确实等于1,把b赋值给d,d也为1
发表于 2021-12-22 17:22:42 回复(0)
看错看成i==1
发表于 2022-10-28 10:06:19 回复(0)
int d = (a == 1)?b:c;     赋值运算符优先级高于三目运算符   三目运算符优先级很低的   所以此语句只执行int d = (a == 1);   因为a=1,所以返回真用1表示,d=1.
发表于 2019-04-22 11:30:09 回复(2)
明白一点就行:
i++ 是先使用 i 在 执行 i = i+1操作
++i 是先执行i = i + 1操作再使用 i
编辑于 2023-07-12 19:34:25 回复(0)
b=a++在后,则先把自身的值给b,之后本身再加1
b=++a在前,则自私一点,先自身加1,再赋值给b

int i = 0;
int a = i++;//a = 0; i = 1;
int b = ++a;//a = 1;b = 1;
int c = a+b;//c = 2;
a==1?b:c//true,所以选b,d = b = 1;
所以a = 1,d = 1
发表于 2023-07-04 13:59:31 回复(0)
啊啊啊啊好气,前面都对了,最后一个d算错了
发表于 2023-05-18 12:29:13 回复(0)
iny a = i++,执行以后i变成1,a=0,因为i++是i自身的自增,而且是后++,是先赋值在自增;
int b = ++a,执行以后a等于1,b等于1,因为是前++,所以是先自增后赋值;
int c=a+b,执行以后,此时a=1,b=1,所以c=2;
int d = (a==1)?b:c  ,a=1所以d=b=1.
综上所述,a=1,b=1,c=2,d=1.
发表于 2023-03-12 20:45:11 回复(0)
靠近等号决定加谁
发表于 2023-02-17 09:45:49 回复(0)
int i = 0;
int a = i++ ; a=0 i=1 ++在后面先执行=在计算++
int b = a++ ; a=1 b=1 先计算在++在赋值
int d = (a==1)? b:a a=1true d=b=1
所以a=1 b=1 d=1

发表于 2022-10-26 20:23:41 回复(0)
a=i++;//a=i(a=0),i++(i=1)
b=++a;//a++(a=1),b=a(b=1)
++在后先赋值再自增
++在前先自增在赋值
发表于 2022-10-09 20:58:55 回复(0)
int i = 0; int a = i++;与int i = 0; i = i + 1的区别在哪里?为什么前面输出a=1,后面的输出i为0?有大佬可以详细解答一下吗?
发表于 2022-08-26 10:49:34 回复(0)
i++,是i先赋值给中间变量temp=0,然后i自增为1,最后把temp复制给a,所以a开始为0,第二句b=++a=1,c=a+b=1+1=2,最后a=1,b=1,c=2,三目运算d=b=1
发表于 2022-07-18 19:48:59 回复(0)

这道题最主要的还是认真的把题目写一下

int i = 0; // i = 0
int a = i ++; // i = 0, a = 0,i = i + 1 = 1
int b = ++a; // a = a + 1 = 1, b = 1
int c = a + b; // c = a + b = 1 + 1 = 2
int d = (a == 1) ? b:c; // a == 1 true , d = b = 1

所以,最后结果是1 1.

 public static void main(String[] args) {
        int i = 0;
        int a = i ++;
        int b = ++a;
        int c = a + b;
        int d = (a == 1) ? b:c;
        System.out.println(a+ "  "+ d);
    }
// a = 1, d = 1

D.

发表于 2022-06-27 16:46:35 回复(0)