linux C學習第五天
今天對變數和常量進行了區分和深入的瞭解
一、變數
1、什麼是變數
程式中用一個字元來表示一段記憶體,因此對於記憶體的操作就是對這個符號的操作。而變數就是這個符號和4位元組的空間。(變數是一個整體,符號和空間都是變數的一部分)
2、變數的組成
(1)記憶體空間:存放資料的地方
(2)變數名:用於方便對記憶體的操作
(3)變數地址(編號):區分變數的在記憶體中的位置,以開頭第一個位元組的地址為變數地址
(4)變數型別:決定這個空間能存放的資料型別
3、識別符號(變數名)的命名規則
(1)只能以數字、字母、下劃線組成
(2)不能以數字開頭
(3)不能使用C語言的關鍵子
4、變數的型別
變數是以變數佔用記憶體空間大小的不同進行劃分的,不同大小的數所需要的記憶體空間大小是不同的。
C語言是按變數佔據的記憶體大小和儲存型別不同,劃分了不同的變數型別。
型別區別有:
(1)帶符號的有:整型有:char、short、int、long、long long,浮點型有:float、double
(2)無符號數:整型unsigned char、unsigned short、unsigned int、unsigned long、unsigned long long,浮點型沒有無符號數
注:整型的規則 char <= short <= int <= long <= long long ,浮點型 float 有效為數為6—7位,double 有效位數為15—16。
5、字元與字串的區分
記憶體中存放的資料多是二進位制數,取出資料時會對二進位制數進行編碼(編碼:把存放的內容轉換成數字放入記憶體,用的時候從記憶體中取出數字再將數字轉換成對應的內容)。
(1)字元:字元使用 ‘ ’ 括起來的單個符號,類似‘a’是指字元a,‘!’是指字元!
(2)字串:字串是用 “ ” 括起來的內容,類似“a”並不是指字元a而是指字串a
6、變數的定義和使用
變數 | 說明 | 舉例 |
---|---|---|
變數的定義 | 給變數分配名字和空間 | int a |
變數的初始化 | 給變數定義的同時給變數一個初值 | int a=3; |
變數的宣告 | 只給變數一個名字但並不分配空間 |
注:變數的初始化只在變數第一次被建立的時候使用
7、標準輸入、輸出函式
(1)標準輸入函式:printf(“列印的內容%列印型別”,要列印的變數的名字或者常量);
(2)標準輸出函式:scanf("%輸入的型別",寫入的變數的地址);
注意:scanf輸入需要的是變數的地址,用&取變數地址。
scanf是以空格或者回車作為一次讀取的結束
二、常量
1、常量指的就是字面量
2、常量的值是不允許改變的
3、整型對應不同的常量
開頭 | 對應進位制 | 舉例 |
---|---|---|
無開頭 | 十進位制 | 12:指十進位制12 |
以0開頭 | 八進位制 | 012:是十進位制的10,八進位制的12 |
以0x開頭 | 十六進位制 | 0x12:是十進位制的18,16進位制的12 |
以L結尾 | 是長整型的 | 12L:是指長整型的12 |
4、浮點數不同的常量
開頭 | 對應型別 | 舉例 |
---|---|---|
預設 | double型 | 1.2:double型的1.2 |
結尾加f | float型 | 1.2:float型的1.2 |
5、字元常量
字元常量有兩種:
一種是普通字元,即用單撇號括起來的一個字元,如’b’ ,‘y’,‘?’。字元常量在儲存在計算機的儲存單元中時,是以其程式碼(一般採用ASCII程式碼)儲存的。ASCII碼只定義了前128個。
另一種是轉義字元,即特殊字元常量。轉移字元是C語言中表示字元的一種特殊形式,其含義是將 \ 後面的字元轉換成另外的意義,例"是指“ ”。
6、#denfine
程式之中一般不會直接用數字、字元常量,會在檔案的開頭用#define 將數字、字元常量定義成一個詞(大寫,用於區分變數名)例如:#define PI 3.14,在下文中寫 PI 就是3.14.
三、cos函式和sin函式在0—360度內用“+”,“*”打印出來
#include <stdio.h>
#include <math.h>
main()
{
double i;
int x,y,n,m;
/*
for(y=0;y<=20;y++)
{
i=y*0.1;
m=acos(1-i)*10;
n=45*(i-1)+31;
for(x=0;x<=62;x++)
if(x==m && x==n)
{
printf("+");
}
else if(x==n)
{
printf("+");
}
else if(x==m || x==62-m)
{
printf("*");
}
else
{
printf(" ");
}
printf("\n");
*/
for(y=0;y<=20;y++)
{
i=0.1*y;
m=asin(1-i)*10;
n=acos(1-i)*10;
for(x=0;x<=62;x++)
if(x==m &&x==n)
{
printf("+");
}
else if(x==n || x==62-n)
{
printf("*");
}
else if(x==m || x==31-m)
{
printf("+");
}
else if(x==m || x==62+m)
{
printf("+");
}
else
{
printf(" ");
}
printf("\n");
}
return 0;
}