2017-08-26 35 views

回答

-2

在C程序,編譯器可識別的基本要素是「令牌」。令牌是源程序文本,編譯器不會將其分解爲組件元素。

基本上,+=是一個速記操作,編譯器將它作爲一個單一令牌

對於防爆:

x+=10; 
x = x + 10; 

上述兩個碼相同,在代碼的編譯器第一線將被視爲一個令牌,在第二個它將被視爲兩個令牌。

有關令牌C tokens

+1

否;那是錯的。 '+ ='是一個單一的標記。 '>> ='也是。 –

+0

我編輯了我的答案 –

+4

所以我明白了。我不確定「編譯器是否將其作爲一個令牌」的含義。我認爲如果你說了類似的東西,我會更高興。儘管'+ ='是一個簡寫操作符,編譯器將它視爲一個單一的記號。另外,請注意,在諸如data [i ++] - > member + = 10;'結果與'data [i ++] - > member = data [i ++] - > member + 10;'不一樣。至少,'+ ='版本是定義的行爲,擴展版本不是。 –

3

按照C11標準的詳細信息,§6.4.6標點符號的 '標點符號' 在C是:

[ ] () { } . -> 
++ -- & * + - ~ ! 
/% << >> < > <= >= == !=^| && || 
? : ; ... 
= *= /= %= += -= <<= >>= &= ^= |= 
, # ## 
<: :> <% %> %: %:%: 

正如你所看到的,+=是一個標點符號 - 這是一個單一的標誌。