當我嘗試使用 (2, 8) 的內置最大值時,由于某種原因我得到了 2。我還創建了自己的函式,如下所示:
#define min(number_1, number_2) (number_1 < number_2 ? number_1 : number_2)
#define max(number_1, number_2) (number_1 < number_2 ? number_2 : number_1)
但它仍然失敗。這是代碼:
#include <iostream>
#include <string>
using namespace std;
#define min(number_1, number_2) (number_1 < number_2 ? number_1 : number_2)
#define max(number_1, number_2) (number_1 < number_2 ? number_2 : number_1)
int main() {
int start_position, end_position;
int teleportation_start_position, teleportation_end_position;
cin >> start_position >> end_position >> teleportation_start_position >> teleportation_end_position;
cout << start_position << " " << end_position << " " << teleportation_start_position << " " << teleportation_end_position << "\n";
start_position = min(start_position, end_position);
end_position = max(start_position, end_position);
teleportation_start_position = min(teleportation_start_position, teleportation_end_position);
teleportation_end_position = max(teleportation_start_position, teleportation_end_position);
cout << start_position << " " << end_position << " " << teleportation_start_position << " " << teleportation_end_position << "\n";
}
我得到了
3 10 8 2
我明白了
3 10 8 2
3 10 2 2
為什么是2 2?
當我洗掉我定義的東西(#define)時它仍然不起作用。我只插入了一個代碼片段。
uj5u.com熱心網友回復:
錯誤是您正在重新使用該teleportation_start_position變數。
teleportation_start_position = min(teleportation_start_position, teleportation_end_position);
在此行之前,您的程式狀態為:
teleportation_start_position= 8teleportation_end_position= 2
但之后,它是:
teleportation_start_position= 2teleportation_end_position= 2
所以在下一行你正在做:
teleportation_end_position = max(teleportation_start_position, teleportation_end_position);
// teleportation_end_position = max(2, 2);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/493781.html
下一篇:陣列上的宇宙飛船算子
