前面我們初步認識了數據類型、常量和變量,并講完了基本數據類型,那接下來咱們詳細介紹下變量和常量。
常量之前我們介紹了什麼是常量,就是在程序的運行中不可以改變的量。常量分為整型常量、浮點型常量、字符常量、字符串常量和符号常量。
1.整型常量1.1十進制整數
這個不難理解,就是我們常說的自然數。如:
1.2 八進制整數
八進制的數表示為前面帶“0”的數。如
1.3 十六進制數
與八進制不同,十六進制整數以“0x”開頭,如:
1.4 二進制數
與八進制不同,十六進制整數以“0b”開頭,如:
整數常量也可以帶一個後綴,後綴是 U 和 L 的組合,U 表示無符号整數(unsigned),L 表示長整數(long)。後綴可以是大寫,也可以是小寫,U 和 L 的順序任意,例如:
2. 浮點型常量
2.1十進制小數形式
這裡的後綴“f”在上一節我們說過了,因為不加這個"f" 計算機會分配一個double類型大小的空間,而前面的變量類型又是float,就有可能報錯(取決于編譯器)。
2.2十進制指數形式
3. 字符常量
3.1普通字符
字符常量需要用單引号表示,或者用ASCII碼值,ASCII我們上一節說過了,忘記小夥伴可以回顧下。
3.2轉義字符
C語言中用反斜杠“\”加字符表示一直特殊的意義,叫做轉義字符。下面是轉義字符表:
之前我們在hello world函數提到過“\n”是換行符,也是轉義字符的一種。
4. 字符串常量上一篇中說過,字符串的表示是用雙引号" ",而且C語言沒有直接定義一個字符串的數據類型,C 中有,所以我們一般用數組表示,例如:char str[] = “ABC”;
這句話的意義是定義一個字符數組,這個大家可以先不了解。“=”右面就表示一個字符串常量。
需要說明的是,字符串的存儲比較特殊,系統會自動在字符串後面加入一個'\0'符号。這個符号在轉義字符表中可以找到,代表空字符。計算機用它表示一個字符串的結束。因此,"ABC"在内存中其實是"ABC\0"。
那麼,問題來了。請問"a"和'a'有什麼區别呢?(上一節我們提過)
5. 符号常量符号常量又叫标識常量,還能稱之為宏常量,名字很多,但都是一個意思。在C中,有一種簡單的定義常量的方式:使用#define宏定義。
一般格式:#define 标識符名稱(常量名) 被替換的目标(常量)
我們來看一個例子:
上面的代碼中由于有了第一句,第二句就相當于:double a = 3.14 * 2;
值得注意的是,這種宏常量的表示方法相當于把定義中常量位置的東西原封不動地寫在常量名的地方。經常有這樣的題目:
這一題的答案是多少?
比較簡單,a = 2 * 5 1 = 11,所以打印是11,記住,遇到這種問題,整體帶入就可以了,不要強行加括号。
總結一下就是:define可以替換常量、簡單的運算公式、C語句。其本質:是字符串的整體代換!我們一般把宏定義放在頭文件的下面,函數的上面,這樣顯得有層次感。
變量常量講完了,我們來說說變量。之前初識常量、變量的時候說過,變量是程序運行時可以發生改變的量。
定義格式: 存儲類型 數據類型 變量名
哎,好像和之前有一丢丢不一樣啊,我們前面定義變量都是int a;就可以了,這個int是數據類型,那這個存儲類型是什麼鬼,别急,先挖個坑。
變量其實隻不過是程序可操作的存儲區的名稱,我們在數據類型的時候,已經詳細介紹了每種變量所占的字節數和數據範圍,這裡就不再重複了。
那這裡我們還要細說什麼呢?
如果有細心的同學應該會發現,我們定義變量的時候通常會見到int a;和int a =10;這兩種形式,那這兩種有什麼區别呢?
首先,我們要搞清楚三個概念:定義、聲明和初始化。
extern int i;就是一種聲明,這裡我們用到了一個關鍵字extern,它的作用就是可以引用其他文件中的變量i,是不占存儲空間的。
int i;就是定義,是開辟了4個字節的存儲空間。
int a = 10;在定義變量的同時給變量賦值,稱為初始化。
變量分為全局變量和局部變量,怎麼理解呢?
通俗地看,全局變量就是{}外的變量,局部變量就是{}内的變量。
總結本節給大家詳細介紹了變量和常量,其中變量分為全局變量和局部變量,常量分為整型常量、浮點型常量、字符常量、字符串常量和符号常量。同時我們區别了聲明、定義和初始化,以及提到一個存儲類型,那什麼是存儲類型呢?下一節介紹。
上節作業分析以下代碼的輸出結果是什麼?
首先看第一題,定義一個字符變量a,c = ‘a’ 1就是字符b,所以打印值為b(這裡是按%c打印的);再來看第二題,a = 1,b = 2,執行第二句a = 1 2 = 3,b = a - b(注意,這裡的a經過上一次變成3) = 3 - 2 = 1,a = 3 - 1 = 2。所以打印為2,1。有沒有發現a和b互換了。
本節作業1.下列程序的輸出結果是16.00,請填空
#include <stdio.h>
int main()
{
int a = 9, b = 2;
float x = _____,y = 1.1, z;
z = a/2 b*x/y 1/2;
printf("%5.2f\n", z);
return 0;
}
2.以下程序運行後的輸出結果是:( )
#include <stdio.h>
#define S(x) 4*x*(x) 1
int main()
{
int i=6,j=8;
printf("%d\n",S(i j));
return 0;
}
溫馨提示:第一節有一個很奇怪的鍊接,大家記得保存哦~
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!