2017-08-26 78 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是:

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

正如你所看到的,+=是一个标点符号 - 这是一个单一的标志。