C語言特殊符號的補充理解

續接符

反斜杠"",他有兩種最常見的功能,一就是續航功能,二就是我們提到反斜杠就會很敏感的轉義字符。

if("1==a&&2==b&&3==c)
{
printf("hello\n");
}

有以上的代碼我們可以等價於

if("1==a&&\
2==b&&\
3==c)
{
printf("hello\n");
}

這裡反斜線就起到瞭一個連接上下兩行的代碼,在咱看來是獨立的三行但在編譯器眼裡這仨貨就是在同一排。設想一下當我的條件足夠多時為瞭提高代碼可讀性,我們最好不擠在一排看著又臭又長,分占會顯得更加清新,所在大的工程文件裡面我們經常會使用續航符號來操作我們代碼的美觀。

註意:續航符在使用時要註意空格,續航符之前的空格是不存在影響的,但如果放在後面就不能編譯。

旋轉光標

由我們系統方面的知識和C語言關鍵字基礎,我們就能搞出來一個我們常見的旋轉光標:

int main()
{
int a = 0;
const char *spot = "|/-\\";
while(1)
{
printf("[%c]\n",spot[a]);
a++;
Sleep(300);
}
}

效果如下:

在這裡插入圖片描述

單雙引號潛規則

char a= 'abc';
printf("%c\n",a);

我們來看看這個代碼的結果:

在這裡插入圖片描述

一個問題,我們腦海裡學習的知識告訴我們char類型是一個字符,但上面代碼不僅不報錯還能完完全全打印出來,我把內容換成 ‘abcd’ 依然能打印出一個 d ,再加一個 e 時就會開始報錯瞭,我們就針對這個打印 ‘abc’ 的現象來看看

我們直接對比一下他的字符長度:

在這裡插入圖片描述

擦嘞,為啥 ‘1’ 會是4個字節大小?其實在C99中,這裡的 a 叫做整型字符常量,本質上是被編譯器看作int類型,所以其實就是在發生著一個截斷現象,我們對 char 類型的認知並沒有毛病,隻是這裡一直是在將4個字節的數據保存進一個 char 類型裡面。

當然,這種認知也隻是存在與C語言裡,在C艸中仍然是被解釋成一個字節,這也能解釋為什麼咱四個字節以內都能跑。

短路

很簡單,說的就是一個邏輯與 (&&),含義就是一個條件不通過就不需要再看後續的條件的情況就是短路。

ASCII碼剛需

為什麼咱計算機要搞這麼多花裡胡哨的符號呢?內存裡存的都是二進制數據,即0和1的一串序列,這時所謂的計算機語言,但作為一個person來講,咱最擅長的不是看0和1,是我們能直觀理解的語句。

我們的計算器程序,在計算結果後如果返回的不是十進制數而是一個二進制序列是對我們極為不友好的,特別是不熟悉二進制的普通用戶。所以程序會存在一個映射,這個映射機制就是給一個二進制序列安排一個人為設計的符號或圖形,比如我屏幕上一個“1234”,在我們眼中它是一個整型1234,但在計算機眼裡它就是四個字符。

所以為什麼我們手機啥的能更換語言系統,英文,簡體中文,繁體中文……,其本質原理就是改瞭一張映射表。

以上就是C語言特殊符號的補充理解的詳細內容,更多關於C語言特殊符號的資料請關註WalkonNet其它相關文章!

推薦閱讀: