說明
在電腦中儲存資料的容器,就像是一個人的稱呼。如小明(變數名稱)是個男生(值),因此當我們聽到小明(變數名稱)這個名字,第一時間會意會到他是個男生(值)。
重點
供回來複習時學習,如果是初學者可以先跳到分類開始,遇到不會的或者是自己有疑問的,再回來這查詢便可。
△定義變數
當我們想要設置一個變數的時候,只要遵守這個格式就行了。
<變數類型> <變數名稱> = <值>;
= ;
int a = 1;//定義一個整數a,並賦值1
<儲存類> <變數類型> <變數名稱> = <值>;
= ;
auto int a = 1;//定義一個自動變數,並賦值1
由於本篇主要在講變數,因此不細談儲存類,若想更多加了解儲存類,
歡迎點我。
△文字的定義
在電腦世界裡,我們會用' '以及" "括弧內容去區分文字。' '是專門括弧字元的,而" "則是括弧字串的。字元與字串在下方有解釋喔~
△文字與數字的差別
'1'與1同樣都是1,卻有很大的不同。文字的特點在於,無論內容是否是我們常見的數字,它都無法用於計算,因為它只是"文字",而數字才是可以用來計算的。
△整數與浮點數
首先,浮點數雖然看起來很奇怪,但其實它就是小數的意思。而電腦當中的整數與小數也是不共通的。當一個變數類型是整數時,我們是無法給它一個小數的值。反之小數也不能擁有整數的值,即使是整數也必須在後方補上小數點以及數個0。
#include "stdio.h"
float a=1;//定義小數a,並賦值1
int main(void){
printf("%f",a);
}
--------------------------------結果---------------------------------
1.000000
△signed(有號)與unsigned(無號)的區別
由於電腦的容量有限,每一個變數所占空間都要用得很小心,因此程式語言中的所有變數都有一個範圍,以防止空間的濫用。在所有跟整數有關的變數中,範圍都是由負數範圍一直到正數範圍,如short的範圍在-32768~32767之間。但剛才我們也說了,我們要盡可能省下空間。因此,當今天我們確定這個數字不會有負數時,就可以使用unsigned(無號)去掉負號讓它的空間只會包含0~正數,以此擴大它的範圍。而unsigned short 就會把-1~-32768的空間給予正數,變成範圍在0~65535之間。
<有無號> <整數類型> <變數名稱> = <值>;
unsigned/signed = ;
unsigned int a =1;//定義一個無號的整數a,並賦值1
△e是什麼符號?
我們經常會看到e這個符號,特別是在浮點數的範圍能看見,如3.4e-38的意思其實就是3.410的-38次方,即是(x)e(y)為x*10的y次方,且x與y可為正或負數。
分類
平常,我們可能不會太在乎數字與文字的差別,認為它們就是一堆可認知的符號。但實際上在程式語言當中,所有的資料都有嚴密的分類。如:
△字元、字符(char)
簡單來說就是指單個字,但嚴格來說是1byte能夠表達的字,也就是ASCII碼當中小於(不含)128的所有字。至於一般的中文字由於不能由1位元表達出來,因此不被視為字元喔。
△字串、字符串(string)
也就是所謂的一串字,但在C語言中它卻是以字元的集合存在。每一個字串的最後一個字都會是"\0",相當於是告訴電腦,這一串字已經結束了。
△短整數、短整型(short int)
2bytes能表達的數字類型,範圍在-32768~32767之間。
若為unsigned short,範圍則是在0~65535之間,
△整數、整型(int)
4bytes能表達的數字類型,範圍在-2147483648~2147483647之間。
若為unsigned int範圍則是0~4294967295。
△長整數、長整型(long int)
4bytes能表達的數字類型,範圍在-2147483648~2147483647之間。
若為unsigned long範圍則是0~4294967295。
△超長整數、超長整型(long long int)
8bytes能表達的數字類型,範圍 在-9223372036854775808~9223372036854775807之間。
若為unsigned long long範圍則是0~18446744073709551615。
△單精度浮點數、單精度浮點值(float)
4bytes能表達的小數類型,範圍在±3.4e-38~±3.4e+38之間,而有效位數為前7位,但能絕對保證的只有前6位數字。
點我看更多關於浮點數
△雙精度浮點數、雙精度浮點值(double)
8bytes能表達的小數類型,範圍在±1.79E-308 ~ ±1.79E+308之間,而精確位數前16位,但絕對保證的只有前15位數字。
△長雙精度浮點數、長雙精度浮點值(long double)
16bytes能表達的小數類型,範圍在±1.79E-308 ~ ±1.79E+308之間,與double相同,但是精確位數則是前19位,而絕對保證的只有前18位數字。
應用
宣告與輸出
#include "stdio.h"
#define __USE_MINGW_ANSI_STDIO 1
int main(void){
此處的輸出可參考格式化輸出
char a = 'A';//字元宣告
printf("%c\n",a);//%c 指字元
char b[] = "快樂賣肝:(";//字串(字元集合)宣告
printf("%s\n",b);//%s指字串
short d = 1;//短整數宣告
printf("%d\n",a);//%d指整數
int e = 1;//整數宣告
printf("%d\n",e);
long f = 1;//長整數宣告
printf("%ld\n",f);//%ld 只是%d 前面加個l表示長整數
long long g = 1;//超長整數宣告
printf("%lld\n",g);//同理兩個l 表示超長整數
float h = 0.5;//單精度浮點數宣告
printf("%f\n",h);//%f 代表float
double i = 0.5;//雙精度浮點數宣告
printf("%lf\n",i);//%lf 代表double
long double j = 1.5;//長雙精度浮點數宣告
printf("%Lf\n",j);//%Lf 代表long double
}
--------------------------------結果---------------------------------
A
快樂賣肝:(
有點想睡:(
65
1
1
1
0.500000
0.500000
1.500000
運算符
#include "stdio.h"
int main(void){
printf("1 + 1的值為: %d\n",1+1);//加法
printf("1 - 1的值為: %d\n",1-1);//減法
printf("1 * 2的值為: %d\n",1*2);//乘法
printf("4 / 2的值為: %d\n",4/2);//除法
printf("10 \% 5的值為: %d\n",10%5);//取餘數
int a =0;
a++;//a的值再加上1
printf("a++ 的值為: %d\n",a);
int b = 2;
b--;//b的值再減1
printf("b-- 的值為: %d\n",b);
int text = 10;
int x =1;
x += text;//相當於是x = x + text的簡寫
printf("x += text的值為: %d\n",x);
x -= text;//相當於是x = x - text的簡寫
printf("x -= text的值為: %d\n",x);
x *= text;//相當於是x = x * text的簡寫
printf("x *= text的值為: %d\n",x);
x /= text;//相當於是x = x / text的簡寫
printf("x /= text的值為: %d\n",x);
x = 12;
x %= text;//相當於是x = x % text的簡寫
printf("x \%= text的值為: %d\n",x);
}
--------------------------------結果---------------------------------
1 + 1的值為: 2
1 - 1的值為: 0
1 * 2的值為: 2
4 / 2的值為: 2
10 % 5的值為: 0
a++ 的值為: 1
b-- 的值為: 1
x += text的值為: 11
x -= text的值為: 1
x *= text的值為: 10
x /= text的值為: 1
x %= text的值為: 2
結論
變數是很基本的內容,一定要學好唷。