📜  编写一个在C和C++中产生不同结果的程序(1)

📅  最后修改于: 2023-12-03 14:56:57.488000             🧑  作者: Mango

在C和C++中产生不同结果的程序

在C和C++中,同样的代码可以产生不同的结果,这是由于两种语言的语法和规则之间存在一些微妙的差异。在本篇文章中,我们将介绍一个例子来展示这种差异。

例子

考虑下面的代码片段:

int foo(int x){
   return x+1; 
}
int main(){
    int i, j;
    i = 5;
    j = foo(i++);
    printf("%d %d",i,j);
    return 0;
}

这段代码的作用是将数字5传递给函数foo,将foo的结果4赋给j,并将变量i的结果6打印出来。

在C中,这段代码的输出是“6 6”。这是因为在C中,函数的参数计算顺序是未定义的,所以i++的值在传递给foo之前已经被递增了。

但是,在C++中,这段代码的输出是“6 5”。这是因为在C++中,函数的参数计算顺序是从左到右的,所以i++的值在传递给foo之前没有被递增。

总结

这个例子展示了即使两种语言非常相似,它们仍然会因为微妙的差别而产生不同的结果。当编写跨平台的代码时,要特别小心这些差异,以便确保代码能够在所有环境中正确运行。