程式陷阱 -- 函數

程式陷阱

簡介

名稱陷阱

運算陷阱

流程陷阱

陣列陷阱

函數陷阱

物件陷阱

C 語言陷阱

Java 陷阱

C#陷阱

訊息

相關網站

參考文獻

最新修改

簡體版

English

#include <stdio.h>

int f(int a, int b) {
  return a - b;
}

int main() {
  int a=3, b=5;

  printf("%d", f(b, a));
}

輸出結果應該是 2,而非 -2。

原因是函數呼叫是按位子傳遞的,而不是根據名稱傳遞的,因此 f(b,a) 一行傳遞參數給 int f(int a, int b) 時會將 5 傳給 a, 3 傳給 b,於是得到 5-3 = 2 的結果。

所以在寫程式時,請注意參數不是根據名稱傳遞的,而是根據呼叫時的參數順序綁定 (Binding) 的這件事情。

Facebook

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License