C中雙方增量
回答
提供原代碼:
x++ = y++
這條線將永遠不會被評估,因爲它不是合法的C,也不會被編譯。 x++
的結果不是左值,不允許在任務的左側。
對於更新的代碼:
float x,y;
*x++ = *y++
這是不合法的,因爲*
不能應用於float
。
我將添加以下代碼:
float *x, *y;
*x++ = *y++;
這個代碼表示:
- 讓一個臨時的,說
float *xt
,等於x
。 - 讓一個臨時的,比如
float *yt
,等於y
。 - 加一個到
x
。 - 加一個到
y
。 - 指定
*xt = *yt
。
的實際操作可以以各種順序來執行,提供xt
取其值x
被更新時,yt
取其值之前y
被更新之前,並xt
和yt
在使用之前它們被定義。
這是確切的答案.... +1你的先生。 – 2013-05-10 19:42:59
如果兩個變量是int(或另一種簡單類型),則原始語句(x++=y++
)是非法的。但是,在指針算術的情況下,這是合法的。單程複製一個字符串,其中既x
和y
是char *
,是
while (*x++ = *y++);
在這種情況下
,指針對應的字符被複制後,直到它遇到串結束字符遞增循環迭代(一在y
指向的字符串中。
該死,一些downvote快樂的傢伙在這裏。我想我也知道那是誰。無論如何,這個答案沒有錯,所以+1。 – dasblinkenlight 2013-05-10 19:40:29
謝謝,我自己在想這件事。無論如何,我發現問題也發生了變化(儘管它仍然是錯誤的)。 – unxnut 2013-05-10 19:41:43
@dasblinkenlight:你可以顯示'x'和'y'的聲明,使得'x ++ = y ++'編譯?如果不是的話,那麼「這是合法的」的陳述,甚至被限定爲「在指針算術的情況下」是不正確的。 「如下所示的修改後的陳述是合法的」陳述可能是真實的。反對票不是永久的;如果答案被編輯了,我會重新考慮它。 – 2013-05-10 19:42:43
- 1. 雙增量
- 2. C#++和 - 增加雙變量0.1 0.1
- 3. C++雙向迭代器前綴增量
- 4. JavaScript增量(雙重檢查)
- 5. C# - 遞增雙值(1.212E + 25)
- 6. 預增加後C中的增量
- 7. 在C#中自動增量#
- 8. 平方根和向量的平方在C++中雙打
- 9. 雙變量在C
- 10. C忽略增量
- 11. C增量拼圖#
- 12. 增量遊戲C#
- 13. C#增量天數
- 14. C#字符增量
- 15. C++增量發出
- 16. SQLite:雙主鍵和自動增量
- 17. 雙倍遞增
- 18. Objective-C方法調用中前綴/後綴增量的區別?
- 19. C++內存地址增量
- 20. C增量運算符
- 21. 增量MapReduce的在C#.NET
- 22. 我不明白增量c
- 23. 數組c 64位增量
- 24. C#奇怪增量bug
- 25. 增量加載c#Metro App
- 26. 後增量運算用C
- 27. c# - 自動增量AssemblyInformationalVersion
- 28. 增量數單擊C#ASP.NET
- 29. char c的身份增量#
- 30. 停止增量時間c#
gcc說:'錯誤:作爲左操作數所需的左值' – wroniasty 2013-05-10 19:34:17
有多少錯誤答案出現是令人着迷或令人傷心的。 – 2013-05-10 19:35:16
@wroniasty你應該做出這個答案:) – stardust 2013-05-10 19:35:55