为什么这个程序在不同编译器中运行结果不同啊?在cfree中得到的是12,Dev-C++中得到的是10?12是怎么计算得到的呢?恳请大家指导一下!
只能说不同编译器, ++ 和 -- 的先后执行顺序 不一样的,结果也是不一样。
这是C语言的未定义行为,未定义行为的代码,不同编译器结果不同
https://blog.csdn.net/houzijushi/article/details/102754339
这个确实不同编译器可能会有不同结果。对于连续的++x + ++x这种,结果不一样
不知道你这个问题是否已经解决, 如果还没有解决的话:
3.5被取整为3了:
我们可能需要这么定义:才能返回4.5
但上面代码麻烦。所以引入函数重载:
即基于不同参数类型进行重载(上图3行的int x
和8行的double x
)。
但下图不是函数重载:(具有相同的函数名、参数列表)
注意:
但以上操作对计算机不友好,所以c++还会做name mangling的操作:即把下图上半部分这些名称表示为下半部分的形式:(编译器内部会维护一个映射,即如何把原始名称变成mangling之后的名称)
demangling:
正是c++支持重载,因此我们必须使用mangling,即我们不能简简单单地通过函数名称来确定函数的信息,我们还需要参数信息。