根據標準c爲什麼j= i++ * i++
undefined和j=i++ & i++
完美法律聲明?根據c標準j = i ++ * i ++是未定義的,但j = i ++&i ++是合法的,爲什麼?
回答
它們都是未定義的行爲。
j = i++ * i++; // undefined behavior
j = i++ & i++; // undefined behavior
對象i
的值在兩個示例中的兩個序列點之間被修改多次。
Your link is tagged * C++ *許多概念是不同的,因爲* C++ *現在已經排序*之前和之後*一個好的* C *問題將[這些結構爲什麼是未定義的行爲?](http:// stackoverflow。 COM /問題/ 949433 /爲什麼 - 是 - 這些構建體 - 未定義行爲)。 –
@ShafikYaghmour感謝這個鏈接,在回答中修改。 – Gangadhar
隨着神祕和ouah已經說過,無論是不確定的。
j = i++ && i++;
將被明確定義,因爲& &捷徑,這意味着,它必須首先evalutate左操作數,然後 - 如果左操作數是真實的 - 正確的操作。
'i ++ && i ++'的定義不是因爲捷徑,而是因爲&&'操作符在評估第一個操作數後引入了一個序列點。 – ouah
可以快捷方式,或*必須*快捷方式? :) –
@ouah:沒錯,它必須這樣做,因爲它是快捷方式。 –
- 1. i = i + j有什麼區別;和i + = j;在C語言?
- 2. 是否(!(i%j))表示不是i的模數,j = 0?
- 3. 爲什麼v [i] = i ++在C中是未定義的行爲?
- 4. 當A [i,j] = j *(A [i-1,j + 1] -A [i-1,j])時,尋找第i行第一個元素的最有效方法是什麼?
- 5. while(++ i < - j)&while(i ++ <j--)有什麼區別?
- 6. m [i] [j] = Double.parseDouble(in.nextLine())是做什麼的?
- 7. 有可能對於兩個正整數i和j,(-i)/ j不等於 - (i/j)?
- 8. 如何在Numpy/Theano中表達c [i,j,k] = a [i,j] * b [i,k]?
- 9. 給定索引i,j(j> = i)如何在子陣列(i,j)上找到A [j]的頻率?
- 10. 二維數組,*(pointerArray [i] + j)是什麼?
- 11. 爲什麼i = i + 1比i ++快?
- 12. 爲什麼printf(「%d%d%d」,++ i,i,i ++)是未定義的行爲?
- 13. Java的爲什麼對使用I,J
- 14. i = i ++不增加i。爲什麼?
- 15. 爲什麼`double i = 3.3,j = 1.1; int k = i/j; printf(「%d \ n」,k);`得到2?
- 16. 在MATLAB中使用(j,i)與(i,j)之間的區別
- 17. x [i] * x [j]用x [i,j]的Sympy替換
- 18. 當i = 10時,爲什麼輸出「未定義」(i = 0; i <10; i ++)?
- 19. 爲什麼tab [i] [j] =「value」段落
- 20. Java For Loop,爲什麼J <I?
- 21. 如何在numpy中有效地實現x [i] [j] = y [i + j]?
- 22. 發現在陣列的(I,J)對總數使得i <j and a[i]>一個[j]的
- 23. private(i,j)在這段代碼中的作用是什麼?如果我從私人(i,j)省略i或j,會有什麼變化嗎?
- 24. 什麼是嵌套循環的Big-Oh i = 0..n-2,j = i + 1..n-1?
- 25. 將矩陣中的元素i,j設置爲Matlab中的i^j
- 26. 如果有什麼(j!=「」爲i中的j):意思?
- 27. i和j等價於python
- 28. i +++ i的價值是什麼?
- 29. 意義的I(I())
- 30. 刪除G(j,i)條目
兩者都未定義。你的意思是,'j = i ++ && i ++'? – Mysticial
*根據標準*你能否提供章節和詩句? – ouah
其實我的朋友從一些教練機構得到了這個問題,但是我發現了一些令人困惑的東西,所以發佈了。 –