重温C语言二:变量学习笔记
目錄
變量
1.為什么需要變量?
2.變量的介紹
3.變量的快速入門
4.變量的使用注意事項
5.變量的數據類型
C語言數據類型:
變量
1.為什么需要變量?
變量是程序的基本組成單位。
不論是使用那種高級程序語言編寫程序,變量都是其程序的基本組成單位,比如:
#include <stdio.h> ? int main() {int a=1;//定義了一個整形變量,取名為a,并賦值為1(強數據類型語言)int b=3;//定義了一個整形變量,取名為b,并賦值為3b=89;//將給變量b重新賦值為89printf("a=%d\n",a);//使用輸出語句,輸出變量,%d表示輸出的形式為整數,下同printf("b=%d\n",b);getchar();//將控制臺停留在當前狀態return 0; }2.變量的介紹
1)概念
變量相當于內存中的一個數據存儲空間的表示,你可以把變量看做是一個房間的門牌號,通過門牌號我們可以找到房間,而通過變量名可以訪問到變量值。
2).變量使用的基本步驟
a.聲明變量
int num;
b.賦值
num=60;
c.使用
printf("num=%d",num);\
d.也可以一步到位使用
int num2=99;
3.變量的快速入門
#include <stdio.h> ? int main() {int num=1;//整數double sorce=2.3;//小數char gender='A';//字符char name[]="a";//字符串/** 說明* a.如果輸出的整數%d* b.如果輸出的是小數%f,如果希望保留小數點%.2f(保留小數點2位)* c.如果輸出的是字符%c* d.如果輸出的是字符串%s* e.在輸出不同數據時,對應的格式化的形式要對應起來*/printf("num=%d sorce=%.2f gender=%c name=%s",num,sorce,gender,name);return 0; }4.變量的使用注意事項
1)變量表示內存中的一個存儲區域(不同數據類型,占用的空間大小不一樣)
2)該區域有自己的名稱和類型
3)變量必須先聲明后使用
4)該區域的數據可以在同一類型范圍內不斷變化
5)變量在同一個作用域內不能重名
6)變量三要素(變量名+值+數據類型)。
5.變量的數據類型
每一種數據都定義了明確的數據類型,在內存中分配了不同大小的內存空間(字節多少表示)
C語言數據類型:
1.基本類型:
(1)數值類型:
1)整形(整數類型)
C語言的整數類型就是用于存放整數值的,比如12,30,3456等數字
圖表結構:
| char | 1字節 | -128(2^7)到127(2^7-1) |
| unsignedchar | 1字節 | 0到255(2^8-1) |
| int | 2字節或4字節 | -32,768(-2^15)到32767(2^15-1) |
| signed int | -2,147,483,648(-2^31)到2,147,483,647(2^31-1) | |
| unsigned int | 2字節或4字節 | 0到65,535(2^16-1)或0到4,294,967,295(2^31-1) |
| short | 2字節 | -32,768(-2^15)到32,767(2^15-1) |
| signed short | 2字節 | 同上 |
| unsigned short | 2字節 | 0到65,535(2^16-1) |
| long | 4字節 | -2,147,483,6448(-2^31)到2,147,483,647(2^31-1) |
| signed long | 4字節 | 同上 |
| unsigned long | 4字節 | 0到4294,967,295(2^32-1) |
| 字節 | ||
案例;
#include<stdio.h> int main(){int num1=-2147483648;//這個數據的最小邊界int num2=-2147483649;//會發生數字越界:2147483647//無符號整型signed int num3=2147483648;//越界 ?//確定int在當前操作系統上占多少個字節printf("int的字節數=%d\n",sizeof(int));//顯示4個字節printf("num1=%d\n",num1);printf("num2=%d\n",num2);printf("num3=%d\n",num3);return 0;a.短整形short
b.整形int
c.長整形long
整數的使用細節
[1].各種類型的存儲大小與操作系統、系統位數和編譯器有關,目前用的以64位系統有關
[2]在實際工作中,C程序運行在linux/unix操作系統下。
[3]C語言的整數類型,分為有符號sined和無符號兩種,默認是signed
[4]C程序中整數常聲明為int整形,除非不足以表示大數,才使用long long
[5]bit:計算機的最小存儲單位。byte:計算機中基本的存儲單位。[二進制再詳細說,簡單舉個例子就是一個short 3和int3]
short3在內存中占2個字節(2byte)=16bit
2)浮點型
基本介紹:
C語言的浮點類型可以表示為一個小數,比如123.4,7.8,0.12等等。
浮點數的分類
| float單精度 | 4字節 | 1.2E-38到3.4E+38 | 6位小數 |
| double雙精度 | 8字節 | 2.3E-308到1.7E+308 | 15位小數 |
說明:
1)關于浮點數在機器中存放形式的簡單說明,浮點數=符號位+指數位+尾數位
2)尾數部分可能丟失,造成精讀損失
d.單精度浮點型float
e.雙精度浮點型double
浮點類型使用細節
【1】浮點類型常量默認為double型 1.1,聲明float型常量時,需加'f'或'F'.
【2】浮點型常量有兩種表示形式
十進制數形式:如:5.12 512.0f .512(必須有小數點)
科學計數法形式:如:5.12e2,5.12E-2
【3】通常情況下,應該使用double型,因為它比float型更精確
【4】printf("d1=%f",d1);//在輸出時,默認保留小數點后6位。
代碼演示:
#include<stdio.h> void main(){//浮點型常量默認為double型,聲明float常量時需要加上"f"或"F";float d1=1.18909095;//從"double"到"float"截斷;所以這是double類型的數據float d2=1.1f;//1.1f就是floatdouble d3=1.2;//ok正確格式double d4=5.12;double d5=.512;//等價為0.512double d6=5.12e2;//等價為5.12*10^2double d7=5.12e-2;//等價5.12*(10^-2)=5.12/10^2=0.0512printf("d1=%.15f d2=%f d3=%f d4=%f d5=%f d6 =%f d7=%f",d1,d2,d3,d4,d5,d6,d7); }3)字符型char
基本介紹:
字符類型可以表示單個字符,字符類型是char,char是1個字節(可以存字母或者數字),多個字符稱為字符串,在C語言中使用char數組表示,數組不是基本數據類型,而是構造類型
案例演示;
#include<stdio.h> void main(){char c1='A';char c2='0';char c3='\t';//%c表示輸出的是一個字符。printf("c1=%c c3=%c c2=%c",c1,c3,c2); }字符類型的使用細節
1)字符常量是用單引號(' ')括起來的單個字符。例如:char c1='a';char c3='9';
2)C中還允許使用轉義字符''來將其后的字符轉變為特殊字符型常量。例如char3='\n'; //'\n'表示換行符
3)在C中,char的本質是一個整數,在輸出時,是ASCII碼對應的字符
4)可以直接給char賦一個整數,然后輸出時,會按照對應的ASCII字符輸出[97]
5)char類型是可以進行運算的,相當于一個整數,因為它都對應有的Unicode碼
字符類型本質探討
1)字符型存儲到計算機中,需要將字符對應的碼值(整數)找出來
存儲:字符'a'---->碼值(97)----->二進制(1100001)----->存儲()
讀取:二進制(1100001)----->碼值(97)--->字符'a'---->讀取(顯示)
2)字符和碼值的對應關系是通過字符編碼表決定的(是規定好的)
4)布爾類型
a.C語言標準(c89)沒有定義布爾類型,所有C語言判斷真假時以0為假,非0為真
b.但這種做法不直觀,所以我們可以借助C語言的宏定義
c.C語言標準(c99)提供了Bool型,Bool仍是整數類型,但與一般整形不同的是,Bool變量只能賦值為0或1,非0的值全部會被存儲為1,c99還提供了一個頭文件<stdboo.h>丁一了bool代表Boolean,true代表1,false代表0,只要導入Stdbool.h,就能方便操作布爾類型了,比如bool flag=false;
代碼:
#include<stdio.h> #define BOOL int #define TURE 1; #define FALSE 0 void main(){int isPass=6;//定義一個布爾變量BOOL isok= TURE;//等價為int Boolisok=1if(isPass){//0表示假printf("passSucess\n");} ?//可以使用宏定義來完成 if(isok){printf("ok"); } ? }5)基本數據類型轉換
自動類型轉換
介紹:
當C程序在進行賦值或者運算時,精度小的類型自動轉換為精度大的數據類型,這個就是自動類型轉換(低到高就會自動轉換)
數據類型按精度(容量大小排序為從高到低)
short -->int-->unsigned int -->long-->unsigned long -->float-->double -->long double
自動類型轉換細節
[1]有多種類型的數據混合運算時,系統首先自動將所有數據轉換成精度最大的那種數據類型。然后再進行計算(如int型和short型運算時,先把short轉成int型在運算)。
[2]若兩種類型的字節數不同,轉換成字節數大的類型,若兩種類型的字節數相同,且一種有符號,一種無符號,則轉成吳符號類型
[3]在賦值運算中,賦值號兩邊量的數據類型不同時,賦值號右邊量的類型將轉換為左邊量的類型。如果右邊變量的數據類型長度比左邊長時,將丟失一部分數據,這樣會降低精度,丟失的部分按四舍五入向前舍入。
#include<stdio.h> void main(){char c1='a';int num1=c1;double d1=num1; ?//ok//excample2short s1=10;int num2=20;int num3 =s1+num2; ?//舉例float f1=1.1f;double d2=4.58667435;f1=d2;//出現精度損失(double ->float)printf("f1=%.8f",f1);//4.58667421(出現了精度損失) } ?強制類型轉換
介紹
在精度高的數據類型轉換為精度小的數據類型,使用時要加上強制類型裝換符(),但可能造成精度降低或溢出,格外要注意。
強制類型轉換一般格式如下:
什么是表達式,任何有值都可以稱為表達式,比如1+2,int num=2;
(類型名)表達式
這種強制類型轉換操作并不改變操作數本身
案例演示
#include<stdio.h> void main(){double d1=156.89;int num1=(int)d1;printf("num1=%d",num1);//結果是156,直接砍掉小數點,也不會進行四舍五入 } ? #include<stdio.h> void main(){char c='a';int i=5;float d=.314F;double d2=1.0;// double result=c+i+d;// c+i+d的類型是float--->自動轉換double okchar result =c+i+d+d2;//printf("result=%lf",result); }強制類型轉換細節說明;
1)當進行數據的從精度高--->精度低,就需要使用到強制類型轉換
2)強轉符號只針對于最近的操作有效,往往會使用小括號提升優先級。
總結
以上是生活随笔為你收集整理的重温C语言二:变量学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决pip3 install mysql
- 下一篇: 自动驾驶 | 全面解读小马智驾的解决方案