20220305 變數

盧冠綸 @ Sprout 2022

變數

什麼是變數?

一個有值的東西,可以更改、運算。

被存在電腦記憶體的某個位置。

變數

int:整數。

float、double:浮點數(小數)。

char:字元。 (如'a'、'B'等)

bool:布林值。 (true / false)

以下列出幾種常見的變數型態:

變數

長度1~255。

只能包含[a-zA-Z]、[0-9]、_。

名字不能數字開頭。

不能和某些關鍵字同名。(如:不能叫做int)

變數的命名規定:

變數

方法:TYPE  VARIABLE_NAME。

例如:

意思:宣告一個形態是 TYPE 的變數,

            名字是 VARIABLE_NAME。

int x;
float y;
char a, b;

宣告變數:

變數

方法:VARIABLE_NAME = SOMETHING。

例如:

意思:把 VARIABLE_NAME 值改成 SOMETHING。

x = 3;
y = -4.5;
a = 'r';
b = a;
int x;
float y;
char a, b;

注意:這個 =,是「賦值」,而非「等於」的意思。

賦值:

變數

int x;    // Declare
x = 3;    // Assign

int y = 10;   // Declare + Assign (better)

事實上,宣告和賦值可以同時做。

變數

int x, y, z;

std::cin >> x;
std::cin >> y >> z;

輸入:  cin >> VARIABLE_NAME。

std::cout << "x = " << x << std::endl;
std::cout << "y = " << y << std::endl;
std::cout << "z = " << z << std::endl;

注意:cin用>>,

            cout用<<。

輸出:  cout << VARIABLE_NAME。

目前為止有疑問嗎?

#include <iostream>

int main(){
    int x = 10000;
    std::cout << x << std::endl;
}

其實,這些變數仍然存在著某些限制......

大家來猜猜看,以下程式會印出什麼東西?

1215752192

怎麼跟預想的好像不太一樣?

#include <iostream>

int main(){
    int y = 100000000000;
    std::cout << y << std::endl;
}
10000

解釋這件事,要從電腦怎麼存資料開始講...

電腦記憶體是用二進位 (0和1) 存資料的。

bit:記憶體的最小單位。就是一個0或1。

byte:8個bit。有                   種可能。

2^{8} = 256

int:4 bytes = 32 bits =        種可能

overflow

2^{32}

如果用的數超出範圍,就稱為overflow,可能會導致程式出錯。

可以表示出           到。           間的所有整數。

   (-2147483648到2147483647)

-2^{31}
2^{31}-1
int y = 100000000000;
std::cout << y << std::endl;

float:4 bytes = 32 bits =        種可能

浮點數誤差

2^{32}

有時候會沒辦法算出非常精確的數值。

double:8 bytes = 64 bits =        種可能

2^{64}
float b = 1.000000000001;
std::cout << b << std::endl;

運算子

變數和變數之間是可以做運算的。

運算子

+:加。                      (如,11 + 3 得到 14)

-:減。                       (如,11 - 3 得到 8)

/:除。若在整數除法中,形同取商。

                                    (如,11 / 3 得到 3)

*:乘。                      (如,11 * 3 得到 33)

%:模。即取餘數。  (如,11 % 3 得到 2)

整數間的運算:

運算子

加、減、乘照舊。

除法會算出浮點數。

           (如,11.0/3.0 得到 3.66667)

浮點數間的運算:

沒有%。

運算子

整數與浮點數一起運算:

會被轉成浮點數運算。

#include <iostream>

int main(){
    int x = 11;
    float y = 3.00;
    std::cout << x/y << std::endl;
    
    float a = 11.00;
    int b = 3;
    std::cout << a/b << std::endl;
}
3.66667
3.66667

運算子

小提示:

^不是次方,記得不要用錯。

先乘除模,後加減。

#include <iostream>

int main(){
    std::cout << 3 + 4 * 2 << std::endl;
    std::cout << (3 + 4) * 2 << std::endl;
}
11
14

小問答:如果我有一個變數x,現在我想把x的值加1

            (例如,如果x原本是6,我要讓他變成7),

              我程式碼應該要怎麼寫?

答案:x = x + 1;

意思:把 x+1 的值賦值給 x 這個變數。

另解:x += 1;

同 x = x + 1。

在減、乘、除、模等運算子或其他數字也都適用。

另解:x ++;

只適用於加一 (x ++) 和減一 (x --)。

運算子

對更多運算子有興趣的話,可以參考:

https://zh.wikipedia.org/wiki/C和C%2B%2B運算子

運算子

小練習: 

運算子

我的作法1: 

#include <iostream>

int main(){
    int a, b;
    std::cin >> a >> b;
    std::cout << 4 * 3 * (a*a + b*b);
}

運算子

我的作法2: 

#include <iostream>

int main(){
    int a, b;
    std::cin >> a >> b;
    int head = 4 * 3 * a * a;
    int body = 4 * 3 * b * b;
    std::cout << head + body;
}

課程最後

作業記得做哦~

課程最後

關於作業提問:

如果遇到困難隨時歡迎提問或討論~

    儘量在討論看版上討論,不要私訊講師,

    這樣其他同學也許也能夠幫助你!

如果要給我們看你的code,儘量找可以貼code的網站,

    例如ideone或codepad,來放你的code,

    不要用截圖的或翻拍的。

課程最後

如果你覺得今天的內容很簡單:

恭喜你~下週繼續加油吧!

可以再多練習哦!建議可以打開你的 IDE 多玩一些,

多寫寫看、玩玩看,會比只讀投影片來得更有用ㄛ!

如果你覺得今天的內容有點難:

20220305變數

By allen522019

20220305變數

  • 651