什么是运算符优先级手册页中的`etc`?

时间:2017-09-05 06:58:28

标签: c operators

macOS 10.12上的

SELECT (MIN(Time))+'-'+(MAX(Time))Period,avg(Power) Average from table_name where Power < 1000 显示man operator,它是什么,手册页错误?

etc.

3 个答案:

答案 0 :(得分:3)

一个you mentioned未列出所有赋值运算符,因此它使用etc. (etc == et cetera)来表示这不是详尽的列表。这不是错误etc.都不是C中的运算符/关键字(想到提及,FWIW )。

other version列出了所有这些内容。

   = += -= *= /= %= <<= >>= &= ^= |=

完整列表出现在章节§6.5.16,C11

答案 1 :(得分:2)

etc.代表拉丁语 et cetera ,字面意思是“和其他”。这里它表示整个“赋值运算符”系列:*=/=%=等。

答案 2 :(得分:1)

虽然您已经对立即问题 - 提供了答案。只是意味着他们没有列出每个单独的赋值运算符 - 您可能会从中受益另外一条信息:

严格地说,C中没有运算符优先级。这意味着C标准没有指定一个。相反,它为表达式指定了一个语法,其符号有点类似BNF(它使用单冒号而不是::=,斜体代替尖括号,粗体文本代替双引号等)。它看起来像这样的例子:

N1570(最新的C11草案),§6.5.1:

  

primary-expression
  标识符
  常数
  字串文本
   表达
  通用选

这相当于以下BNF:

<primary-expression> ::= <identifier> | <constant> | <string-literal>
                       | "(" <expression> ")" | <generic-selection>

§6.5的完整语法分布,可以推导出“运算符优先级”,但是条件运算符 >(?:):它不允许冒号右侧的赋值表达式,因此虽然它通常列出的优先级高于赋值,但您必须将在parantheses中赋值使其成为主表达式(参见上面的语法片段)。关于此问题有一个nice explanation on cppreference.com