在C-BNF中,一元运算符::=(“x2B”-“x2B”~“x2B”!)。为什么在UnaryOperator中排除/和%?
在cbnf中,在C-BNF中,一元运算符::=(“x2B”-“x2B”~“x2B”!)。为什么在UnaryOperator中排除/和%?,c,bnf,unary-operator,binary-operators,C,Bnf,Unary Operator,Binary Operators,在cbnf中,乘法表达式和一元运算符的定义如下: /和%是否在乘法表达式中定义?根据 一元运算是只有一个操作数的运算 因此,只需要一个操作数或只对一个操作数起作用的运算符是一元运算符 %和/肯定需要两个操作数,所以它们不是一元运算符 如果您想知道+和-的存在,它们是一元正运算符和负运算符(一元算术运算符),而不是加法和减法 引用第§6.5.3.3章中的C11 一元+运算符的结果是其(提升的)操作数的值。整数 对操作数执行升级,结果具有升级类型 及 一元-运算符的结果是其(提升的)操作数的负数。整
乘法表达式
和一元运算符
的定义如下:
/
和%
是否在乘法表达式中定义?根据
一元运算是只有一个操作数的运算
因此,只需要一个操作数或只对一个操作数起作用的运算符是一元运算符
%
和/
肯定需要两个操作数,所以它们不是一元运算符
如果您想知道+
和-
的存在,它们是一元正运算符和负运算符(一元算术运算符),而不是加法和减法
引用第§6.5.3.3章中的C11
一元+
运算符的结果是其(提升的)操作数的值。整数
对操作数执行升级,结果具有升级类型
及
一元-
运算符的结果是其(提升的)操作数的负数。整数
对操作数执行升级,结果具有升级类型
/
和%
在只使用一个操作数的上下文中不存在,因此它们永远不是一元运算符。
至于其他经营者:
&
可以表示的地址(以及按位和)
*
可以表示指针解引用(以及乘法)
+
和-
可以是一元加/减
和~
是逻辑求反和位补
某些字符用于多个运算符*
用于乘法运算符(二进制运算符)和地址间接运算符(一元运算符)。因此,您可以使用如下表达式
x = a * *p; // multiply a by what p points to
%
和/
在一元表达式中没有类似的用法,这就是它们不出现在一元运算符列表中的原因
&
是另一个字符,可以用作一元运算符(的地址)或二进制运算符(按位和
) 什么是C BNF?C标准?@SouravGhosh,这是C的Backus-Naur形式。有+表示a+b的加号吗?一元+和二元+是不同的运算符
x = a * *p; // multiply a by what p points to