#includeint max(int a, int b) { return a > b ? a : b; } int main() { int x, y; printf("輸入兩個整數(空格分隔):"); scanf("%d %d", &x, &y); printf("最大值:%d\n", max(x, y)); return 0; }
#include#define N 10 int main() { int a[N]; printf("輸入 %d 個整數:", N); for (int i = 0; i < N; ++i) scanf("%d", &a[i]); // 冒泡排序:外層控制輪數,內層相鄰比較交換 for (int i = 0; i < N - 1; ++i) { for (int j = 0; j < N - 1 - i; ++j) { if (a[j] > a[j + 1]) { int t = a[j]; a[j] = a[j + 1]; a[j + 1] = t; } } } printf("排序結果:"); for (int i = 0; i < N; ++i) printf("%d ", a[i]); puts(""); return 0; }
#include#define MAX(a,b) ((a) > (b) ? (a) : (b)) // 關鍵:參數加括號,整體加括號 int main() { int x = 3, y = 5; printf("MAX(3,5)=%d\n", MAX(x, y)); printf("MAX(x++, y)=%d\n", MAX(x++, y)); // 注意:副作用會被展開多次! return 0; }
巨集陷阱:MAX(x++, y) 展開為 ((x++) > (y) ? (x++) : (y)),x++ 執行兩次!含副作用表達式禁用巨集,改用 inline 函數。
static inline int max_inline(int a, int b) {
return a > b ? a : b;
}
// 編譯器會內聯展開,無函數呼叫開銷,且無副作用風險
a>b?a:b 最簡潔。qsort 或 std::sort。static inline。