3
将参数std :: min更改为浮点数的编译器输出
我在Compiler Explorer中摆弄东西,发现传递给std :: min的参数顺序更改了发出的程序集。 这是Godbolt编译器资源管理器上的示例 double std_min_xy(double x, double y) { return std::min(x, y); } double std_min_yx(double x, double y) { return std::min(y, x); } 它将被编译(例如,在clang 9.0.0上用-O3)为: std_min_xy(double, double): # @std_min_xy(double, double) minsd xmm1, xmm0 movapd xmm0, xmm1 ret std_min_yx(double, double): # @std_min_yx(double, double) minsd xmm0, xmm1 ret 如果我将std :: …