首页 > 试题广场 >

i最后等于多少?

[单选题]
i最后等于多少?
int i = 1;
int j = i++;
if((i > j++) && (i++ == j)) i += j;
  • 3
  • 5
  • 6
  • 7
推荐
B,
int j = i++;执行后:
i=2; j=1
if((i>j++) && (i++ == j)) i+=j;
其中,j++后j=2. (i++ == j)成立,同时i++变成了3
最后 i+=j; i=3+2变成了5  

编辑于 2015-02-02 21:56:58 回复(1)

i++: 先把i的值赋给别人,i在自增1;

++i: i的值先自增1,在赋值给别人。

int i=1;

int j=i++;//此时先把i的值1赋值给j,所以j此时为1,然后i的值自增1,变为2

if((i>j++)&&(i++==j))//首先i>j++比较的是2>1,比较完后,j的值已经变成了2.i++==j比较的是2==2,此时i的值已经变成了3,if语句里面的条件为真,继续执行

i+=j;//所以最后i的值是i=3+2=5.

发表于 2017-03-28 13:26:12 回复(8)
int i = 1;
int j = i++;
if((i>j++) && (i++ == j)) i+=j;
第一步:i=1,j=1,i++之后 i=2
第二步:(i>j++),2>1成立,所以j++之后为2,&&之后 (i++ == j),此时i==2,j==2,i++之后为3,&&之后的也成立
第三步:既然判断条件成立,执行 i+=j,即 i=i+j=3+2=5
选B
发表于 2015-06-08 17:29:43 回复(0)
看成循环…
发表于 2018-10-16 15:36:37 回复(0)
#include <iostream>
using namespace std;
void main()
{
int i = 1;
int j = i++;
cout << i << ","<<  j  <<endl;
if((i>j++) && (i++ == j)) i+=j;
cout << i << ","<<  j  <<endl;
system("pause");
}
验证一下便知,输出分别为2,1和5,2
发表于 2015-09-02 23:55:40 回复(0)
各位 我不太懂&&不是两边都需要为真吗,怎么这里只有右边为真就进入if语句了 是我学错了吗
发表于 2023-04-12 19:50:21 回复(0)
因为i=1,j=i++=1++=1,所以i=2,2>1++=1成立,所以j=2,并且i++=2++ = 2也成立,i=3,因此进入循环体,i=i+j=3+2=5
发表于 2022-04-04 22:10:37 回复(0)
这题主要考操作符的优先级
发表于 2020-10-13 21:30:30 回复(0)
int i = 1;
int j = i++;
// 此时i = 2, j = 1;

if((i>j++) && (i++ == j)){
    // 从左往右看,
    // i>j成立,此时j+=1,j=2,继续判断i++ == j,成立,此时i+=1, i=3; 
    i += j;
    //j=2, i=5
}

发表于 2020-10-07 16:30:36 回复(0)
这个题把与改成或才有意思,答案是4
发表于 2017-12-01 20:29:08 回复(1)
发现了一个很有意思的东西,如果改成if (i<j++){},即便这条判定语句没有成立,但是j还是自加了
发表于 2017-03-15 15:14:04 回复(0)
i++或者j++执行后,i,j值先不变,等i,j被调用过一次后,再给其加1
发表于 2016-07-16 18:36:35 回复(0)
题目貌似有问题吧。下面才是正确题目吧
inti = 1;
intj=1; =i++;
if((i>j++) && (i++ == j)) i+=j;

编辑于 2015-08-25 08:51:05 回复(0)