语法和语义错误

C + +是标注“命令,进入”define功能参数是评估。如果第一个参数评估左冰,这成为A呼叫to add(5,6),其中相同的11。如果右击冰参数评估成为第一,这一使命to add(6,6),其中相同的12。注意,这是一个问题,因为只有一个参数对X有一个侧效应。
有其他的案件是在C + +的命令是不specify到某些事情,这是评估的,所以不同的compilers会不同的假设。即使当C + +是让它清澈的事情应该如何评估,一些compilers执行行为involving变量与侧incorrectly效应。这些问题一般都要能避免任何任何保障,村有一个可变的那侧效应应用冰用,没有更多的比你在一个给定的声明。
规则:不要使用A有一个可变的那侧效应应用到它更比一次,在一个给定的声明。

规则:请预偏移值和预decrement过邮件和邮件decrement增量。《前缀版本是不只是更多的performant,y-o-u-r-e讨厌likely狂奔到奇怪的问题与他们。

2
3
4
5
6
7
8
9
10
11
12
13
int add(int x, int y)
{
    return x + y;
}
 
int main()
{
    int x = 5;
    int value = add(x, ++x); // is this 5 + 6, or 6 + 6?  It depends on what order your compiler evaluates the parameters in
 
    std::cout << value; // value could be 11 or 12, depending on how the above line evaluates!
    return 0;
}

让我们来看看这条线是如何工作的更详细。首先,编译器将一个具有相同值的临时副本复制为5。然后,它将原来的×从5增加到6。然后,编译器将计算结果为5,并将该值赋给Y,然后将临时副本丢弃。
因此,结束时的值为5,和*结束的值6。
这里是另一个例子显示的差异之间的前缀和后缀版本:

语法和语义错误
编程很难,有很多方法可以使错误。错误通常分为两类:语法错误和语义错误(逻辑错误)。
当你写一个语句,这是不正确的语法错误发生时,根据的语法+ + +语言。这包括错误如缺少分号,未声明的变量,不匹配的括号或大括号,和未结束的字符串。例如,下面的程序包含了相当多的语法错误:

你可能感兴趣的:(语法和语义错误)