---
# System prepended metadata

title: 變數是什麼？

---

# 變數是什麼？
- 變數(Variable)
    - 寫程式時常常要處理一些資料（值，數字，文字，如：身高），為處理方便可以設定一個代號來代表這個要處理的值，這個代號就叫變數（在得到最後結果前值可能會變，類似數學方程式）
- 語法
    - 類C語言（C like）都一定要先**宣告**
        - 格式`型態宣告字 代號`;
        ```c=
        int x;
        ```
        - 可宣告的4種型態
            - int整數
            - float浮點
                - 小數點後五位（至多）
                - 單精度小數
                - 超過會顯示錯誤
            - double
                - 小數點後十一位
                - 雙精度小數
                - 不足位置可四捨五入
            - char字元
            - 補充：Java有8種
        - 4個規則
            - 不能用保留字
                - C語言的保留字共有60個
            - 不能用限制符號（@、;、"等）
            - 第一個字母不能是0~9
            - 長度≦256字元
    - 宣告變數的功能
        - 初始化
            - 給予初始值
            ```c=+
            x = 0;
            ```  
            - `=`==不是等於==是**賦值**，給左邊東西右邊的值
        - I/O
            - 輸入Input
            - 輸出Output
            - 示意
                - 外界→輸入→程式→輸出
        - 計算
    - 補充：C語言的註解
        - `//`後方加入要寫的內容
        - 寫註解是很重要的
    - 如何印出變數
        ```C=+
        printf(x);        //這不是對的寫法，編譯器會顯示Waring並且程式當機無法執行
        printf("我今年%d歲\n", x); //後方的值會被帶入%?的位置，然後被印出來。另外逗號前後空格沒差，僅排版習慣
        ```
    - printf如何印出字串以外的東西
        - 格式指定：%+某個指定格式的字符
            |字符|意思|
            | -------- | -------- |
            |d|整數格式|
            |f|小數格式(Float)|
            |c|字元格式|
            |lf|小數格式(double)|
            - 字元只能輸出一個符號
                - 賦值要用`'`框起來
                    - 例：`id = 'a'` 
- 補充：`return`是什麼樣的指令
    - 語法`return 某個值;`
    - 作用：程式執行到return，會將後面的「某個值」回傳
    - 交到呼叫這段程式的物件
    - 並且傳到目前的程式的上一層
    - 我們通常會在一個main程式最後一行加上`return 0;`
        - 意思是：
            - 把0交出去（給Windows系統）
                - 有回收記憶體的功能~
            - 停止程式
- `puts`作用跟`printf`相似
    - s:string
    - 簡縮指令
        - 可以省略`\n`也能換行
    - 只能輸出字串，`printf`可以輸出字串以外的東西
        - printf的f的意思就是格式（Format），整個意思就是「輸出格式」
- 變數的命名建議
    - 易讀性
        - 所以x,y這種不是很好
- 補充：可以一次宣告多個變數
    ```c=
    int a,b,c;
    ```
    - 可以宣告完直接賦值
        - assign value after declaration