在c ++中评估是什么意思?

时间:2017-03-26 12:54:46

标签: c++

我无法理解用c ++评估某些东西意味着什么。我有这句话:“它的语法是:

条件? result1:result2

如果condition为true,则整个表达式的计算结果为result1,否则结果为result2。“我知道重点是什么,但在这种情况下,我无法直接得到单词”evaluate“的含义。这是否意味着喜欢继续,检查或什么? 谢谢!非常感谢

4 个答案:

答案 0 :(得分:3)

每个表达式都有一个值。该值是通过评估表达式获得的。在一些强制性的英语扭曲中,我们有时会说"表达式评估为[某事]"。

表达式的计算通常在运行时发生,它是程序的运行时属性。 (例外是常量表达式。)

评估规则是递归定义的:

  • 文字评估其代表的值,例如5评估值" 5"。
  • 表达式a + b计算表达式ab的值的数学和。 (因此,要评估表达式a + b,首先必须评估表达式ab。)
  • 表达式a = b计算为a的新值(并且具有副作用,用于更改{{1}指定的左值的值} {到a)的值。
  • ......依旧......
  • 表达式b评估c ? a : ba的转换,具体取决于b的值,{{1}的类型的公共类型}和c

请注意,并非所有表达式都会被评估。例如,在表达式a中,子表达式b和子表达式sizeof(+a)都不会被评估。类似地,在条件表达式中,未评估未使用的表达式,并且在逻辑表达式中,不评估短路的死表达式。

"运行时未定义的行为"通常是表达评估的结果。

答案 1 :(得分:1)

它是 private int i; private boolean b; private String[] strings; private int[] js; public Transition(int i, boolean b, String[] strings, int[] js) { this.i = i; this.b = b; this.strings = strings; this.js = js; } public static State from; public static Set<Condition> conditions; public State to; @Override public boolean add(Transition e) { // TODO Auto-generated method stub return false; } @Override public void add(int index, Transition element) { // TODO Auto-generated method stub } @Override public boolean addAll(Collection<? extends Transition> c) { // TODO Auto-generated method stub return false; } @Override public boolean addAll(int index, Collection<? extends Transition> c) { // TODO Auto-generated method stub return false; } @Override public void clear() { // TODO Auto-generated method stub } @Override public boolean contains(Object o) { // TODO Auto-generated method stub return false; } @Override public boolean containsAll(Collection<?> c) { // TODO Auto-generated method stub return false; } @Override public Transition get(int index) { // TODO Auto-generated method stub return null; } @Override public int indexOf(Object o) { // TODO Auto-generated method stub return 0; } @Override public boolean isEmpty() { // TODO Auto-generated method stub return false; } @Override public Iterator<Transition> iterator() { // TODO Auto-generated method stub return null; } @Override public int lastIndexOf(Object o) { // TODO Auto-generated method stub return 0; } @Override public ListIterator<Transition> listIterator() { // TODO Auto-generated method stub return null; } @Override public ListIterator<Transition> listIterator(int index) { // TODO Auto-generated method stub return null; } @Override public boolean remove(Object o) { // TODO Auto-generated method stub return false; } @Override public Transition remove(int index) { // TODO Auto-generated method stub return null; } @Override public boolean removeAll(Collection<?> c) { // TODO Auto-generated method stub return false; } @Override public boolean retainAll(Collection<?> c) { // TODO Auto-generated method stub return false; } @Override public Transition set(int index, Transition element) { // TODO Auto-generated method stub return null; } @Override public int size() { // TODO Auto-generated method stub return 0; } @Override public List<Transition> subList(int fromIndex, int toIndex) { // TODO Auto-generated method stub return null; } @Override public Object[] toArray() { // TODO Auto-generated method stub return null; } @Override public <T> T[] toArray(T[] a) { // TODO Auto-generated method stub return null; } } import java.util.*; public class State { String state; } public class Condition { String condition; } 的简写语法。如果表达式(条件)的条件为真,则if else将执行result1。 它是if else的缩写形式,Like。

result2

实际例子。

if(condition){
   result1;
}else{
   result2;
}

说明:如果年龄大于或等于25,则结果1其他结果2。 int age = 25; age >= 25 ? cout << "Result 1" : cout << "result 2"; 表示如果从Evaluate(表达式)result1得到真,并且得到错误的结果2。

答案 2 :(得分:1)

条件运算符计算表达式,如果该表达式的计算结果为true,则返回一个值;如果表达式的计算结果为false,则返回另一个值。它的语法是:

condition ? result1 : result2 

如果condition为true,则整个表达式求值为result1,否则求值为result2。

7==5 ? 4 : 3     // evaluates to 3, since 7 is not equal to 5.
7==5+2 ? 4 : 3   // evaluates to 4, since 7 is equal to 5+2.
5>3 ? a : b      // evaluates to the value of a, since 5 is greater than 3.
a>b ? a : b      // evaluates to whichever is greater, a or b. 
  

我无法直接得到“评价”这个词的含义   这个背景

这意味着表达式在评估后具有单个值。例如在这个

7==5 ? 4 : 3     // evaluates to 3, since 7 is not equal to 5.

表达式的计算结果为3(即表达式的值为3) 在评估之前它可能是4或3但在评估之后表达式等于3

答案 3 :(得分:1)

首先,我们将采取完整的声明,因为您发布的声明不完整:

store = condition ? result1 : result2
  

如果条件为真,则整个表达式的计算结果为result1,否则为result2

这意味着如果在缩短的if语句中称为condition的表达式为真,则result1存储在等式左侧的变量中,这里是store

另一方面,如果condition不成立,则result2将存储在store中。这就是表达的意思。

这种表达式是一个缩短的if-else语句。如果您要将此语句转换为完整的if-else语句,那么它将类似于:

if (condition == true)
    store = result1;

else 
    store = result2;

以下是此类声明的示例:

假设我们有:

int num = 5;

int var = (num == 5) ? 6 : 10;

然后我们可以将此声明扩展为重写,含义相同,如下所示:

int num = 5;
int var;

if (num == 5)
    var = 6;

else
    var = 10;

在这两种情况下,生成的表达式都会将 6 存储在var中。

简而言之, 评估 只是意味着评估基于if-else比较的结果表达式,并将结果值传递给左侧的变量。有时,左侧可能没有变量,在这种情况下,函数或表达式被评估为&#34;将运行。例如:

(num == 5) ? cout << "result1" : cout << "result2";

最后输出 result1

另外,例如:

(num == 5) ? cout << 5 + 23 : cout << 4 + 32;

评估 将第一个表达式(自num从上一个示例初始化为5)到28,然后输出。

希望这有帮助。