use*_*758 4 c++ standards expression
1)为什么他们被称为"主要"?按照评价的顺序,他们是第一个?
2)C++ 03标准定义了第5章(注1)中的表达式:"表达式是指定计算的运算符和操作数的序列."
然后5.1"主表达式"定义主表达式列表:
(1)primary-expression:
文字
这个
(表达)
ID-表达
我的主要问题是关于第三点:
(表达)
因此,根据标准,带括号的每个表达式都是主表达式,首先计算它们.它看起来很合理,并且给出了C++表达式(优先级)中括号行为的精确解释.
所以这就是例如
(变量+10)
是一个主要的表达.
var =(变量+ 10)*3
根据我的理论,它看起来很合乎逻辑,但我知道其他来源
(变量+10)
不是主要表达,但为什么?我不明白,但标准定义了
(表达)
作为主要表达.
请帮帮我,因为我做不到.非常感谢,对不起我的英语不好.你好.
C++表达式可能很复杂,也就是说它们可以由嵌套表达式组成,通过使用运算符组合在一起,而这些嵌套表达式又可能很复杂.
如果将一个复杂的表达式分解成更小的单位,那么在某些时候你会留下一些原子,因为它们无法进一步分解.这些是主要表达; 它们包括标识符,文字,关键字this和lambda表达式.
但是,确实存在一个C++标准定义为主要的非原子构造:用括号括起来的表达式(又称括号).所以(variable + 10)你给出的例子是一个主表达式(子表达式variable(它是一个标识符)和10(它是一个文字)也是如此.
我相信标准将它们列为主要表达式,因为它们在评估顺序中扮演真正的原子表达式的角色:必须在后备表达式的值与其他表达式进行评估之前评估括号内的任何内容:在(5+10)*a,5+10它必须在进入评估之前进行评估*a.[注意,这并不意味着5+10在评估表达式之前a进行评估.它只意味着5+10必须在可以评估乘法本身之前进行评估.
因此,在这个意义上,括号中的子表达式就好像它们是原子的一样.
我想这就是为什么标准不对这个概念使用术语"原子表达式"的原因.它们表现得好像是原子的,但至少括号内的品种实际上并不是原子的.对我来说,"初级"似乎是一个很好的选择.