📅  最后修改于: 2023-12-03 14:56:57.488000             🧑  作者: Mango
在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
之前没有被递增。
这个例子展示了即使两种语言非常相似,它们仍然会因为微妙的差别而产生不同的结果。当编写跨平台的代码时,要特别小心这些差异,以便确保代码能够在所有环境中正确运行。