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。有 種可能。
int:4 bytes = 32 bits = 種可能
overflow
如果用的數超出範圍,就稱為overflow,可能會導致程式出錯。
可以表示出 到。 間的所有整數。
(-2147483648到2147483647)
int y = 100000000000;
std::cout << y << std::endl;
float:4 bytes = 32 bits = 種可能
浮點數誤差
有時候會沒辦法算出非常精確的數值。
double:8 bytes = 64 bits = 種可能
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