i i等於多少?關於i 以及 i的分析

2021-10-20 08:19:15 字數 2220 閱讀 4827

牛客網回顧錯題,有一道題很有意思,值得研究一下:

下面的程式將來列印什麼?()

public class testincr

}

再看一道題,也是來自牛客網:

public class q3 	

}

是不是感覺很**,我剛開始看到的時候也覺得很扯淡,誰會這麼寫**?我剛開始還以為編譯不通過。但是,上面兩段**確實是可以通過編譯,而且可以正確計算出結果。接下來我們先確定一下i++以及++i這兩個具體的執行流程:

i++:先自增,再返回原來的值

int temp = i;

i = i + 1;

return i;

++i:直接+1返回

i = i + 1;

return i;

因此下面這段**的列印值是:1  0  2  0

int i = 0;

int j = 0;

int m = 0;

int k = 0;

j = i++;

m = ++i;

k = k++;

system.out.println(i);

system.out.println(j);

system.out.println(m);

system.out.println(k);

再看上面第一道牛客網的題:列印結果是1。

下面的程式將來列印什麼?()

public class testincr

}

有的同學可能有疑問,不應該結果為0 嗎?首先,我們要清楚乙個計算規則:多個表示式的加減法運算都是從左到右進行的,每組表示式根據加減乘除的優先順序判定。

比如:

int a = 1;

int b = a + 2*a++;

這就是三個表示式:a,a++,2*a++;計算順序從左到右;計算結果為:1+2*2 = 5;

再比如:

int b = 2;

int c = b++ + 3 * b++;

這也是三個表示式:b++, b++, 3 * b++;計算結果為:2 + 3 * 3 = 8;

因此i=i++ + i;並不是計算完i++就直接返回的,後面要加乙個i的值。這道題的計算流程為:

i = i++ + i;

i++ ===> int temp = i; i=i+1;return i; i++這個表示式的結果為0,i的值為1;

i++ + i ===> 0 + 1 =1;結果為1;

再看第二道題:列印結果為 2,2,1,16;

public class q3 	

}分析:

k = i++ + i++;

第乙個i++ ==> int temp = i; i=i+1; return temp;此時結果為0;i為1;

第二個i++ ==> int temp = i; i=i+1; return temp;此時結果為1;i為2;

二者相加:k = 0+1 =1

j = ++j + j++;

++j ==> j = j+1; return j; 此時結果為1,j為1;

j++ ==> int temp = j; j = j+1;return temp; 此時結果為1,j為2;

二者相加為1+1=2;j為2;

l = l++ + 15 + l++;

第乙個l++ ===> int temp = l; l = l+1;return temp; 此時結果為0;l為1;

15常量,不計算

第二個l++ ===> int temp = l; l = l+1; return temp; 此時結果為1; l為2;

三者相加為 0 + 15 + 1 =16.結果為16。

如果看到這裡你還是感覺有些不理解的話,可以參考這篇講關於i++以及++i原理的部落格:

如果對你有幫助,請點贊

關於i 和 i以及左值,右值

今天無意之間看到了帖子上有人說 i 5 不合法 i 5 合法首先對於i 的實現是 int temp temp i i i 1 return temp 而 i的實現是 i i 1 return i 所以對於我們提出來的問題已經能得到解決了 再囉嗦幾句關於i 和 i的效率問題 按上面分析來說,i的效率是...

對i 與 i的分析

標籤 c語言 i i by 小威威 1 單獨使用 i 與 i單獨作為乙個語句使用時,即 i i 二者是等價的,並沒有什麼爭議,相當於語句 i 1 2 賦值使用 首先,i 與 i有什麼本質區別呢?i 指先取出i,再進行i 1操作 i指先進行i 1,再取出i。i 與 i賦值使用時,即 a i a i 此...

關於i 與 i 的問題

不要再問 i i啦!好多人面試的喜歡問 i 和 i的區別。尤其是對應屆畢業生面試中尤為常見。更有主考官原意出 x 4 x 4 x x 這種難題,覺得這種題可以綜合考察被面試者的綜合能力。不排除有人,能把這種題答的很完美,但也不排除有的主考官連自己都搞不明白。先不說這題出的對錯,這種問題,在大部分 覺...