C語言 變數(variable)

2022/07/07閱讀時間約 10 分鐘

說明

在電腦中儲存資料的容器,就像是一個人的稱呼。如小明(變數名稱)是個男生(值),因此當我們聽到小明(變數名稱)這個名字,第一時間會意會到他是個男生(值)。

重點

  供回來複習時學習,如果是初學者可以先跳到分類開始,遇到不會的或者是自己有疑問的,再回來這查詢便可。

△定義變數

  當我們想要設置一個變數的時候,只要遵守這個格式就行了。
<變數類型> <變數名稱> = <值>;
  = ;
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

結論

  變數是很基本的內容,一定要學好唷。  
為什麼會看到廣告
8會員
18內容數
這裡是來自 高科大 資管系二年級的學生,希望能在學習的過程中,也分享這些知識給大家。
留言0
查看全部
發表第一個留言支持創作者!