*q++=*q+1
那位好心人可以幫忙解答一下這個的意思,以及每個符號優先級
uj5u.com熱心網友回復:
錯誤的運算式 這是未定義行為結果沒意義 沒必要討論
uj5u.com熱心網友回復:
這個還真不好說,看編譯器了有些函式庫如strcpy的實作可能也用了類似的運算式 while((*des++ = *src++) != '\0'); //等價于 *dest=*src( 并判斷*dest是否是'\0'), 再dest++, src++
如果你的編譯器也是按照上面這種運算,那就是先 *q=(*q)+1(即改變*q的內容為*q的值+1),再q++(把q指標往前移)
uj5u.com熱心網友回復:
這個運算式在C++17前是錯誤的,行為是未定義的。C++17開始,這個運算式是合法的。因為C++17規定,=號右側的運算式計算和副作用均先于左側運算式。
*q++=*q+1,計算順序大致如下:1:A=*q+1 2: q++ 3:按照后++的副作用規則,得出*q=A
uj5u.com熱心網友回復:
*des++ = *src++ 和 *q++=*q+1是完全不同的轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/94476.html
標籤:新手樂園
上一篇:C語言 順序結構線性表的實作
下一篇:急!!該怎么寫這個回圈代碼?
