c語(yǔ)言單引號(hào)的用法
時(shí)間:
長(zhǎng)思709由 分享
c語(yǔ)言單引號(hào)的用法
C語(yǔ)言中用單引號(hào)引起的一個(gè)字符實(shí)際上代表一個(gè)整數(shù),整數(shù)值對(duì)應(yīng)于該字符在編譯器采用的字符集中的序列值。而一般我們的編譯器采用的都是ASCII字符集。因此's'的含義其實(shí)和十進(jìn)制數(shù)115的含義是一致的。下面小編就給大家介紹下c語(yǔ)言單引號(hào)的用法。
單引號(hào)和雙引號(hào)在C中的意義完全不同,包圍在單引號(hào)中的一個(gè)字符只是編寫整數(shù)的另一種方法。這個(gè)整數(shù)是給定的字符在實(shí)現(xiàn)的對(duì)照序列中的一個(gè)對(duì)應(yīng)的值,即ASCII碼值。因此在一個(gè)ASCII實(shí)現(xiàn)中,‘a’和0141或97表示完全相同的東西,而一個(gè)包圍在雙引號(hào)中的字符串,只是編寫一個(gè)有雙引號(hào)之間的字符和一個(gè)附加的二進(jìn)制為零的字符所初始化的一個(gè)無(wú)名數(shù)組的指針的一種簡(jiǎn)短方法。
使用一個(gè)指針來(lái)代替一個(gè)整數(shù)通常會(huì)得到一個(gè)警告消息(反之亦然),使用雙引號(hào)來(lái)代替單引號(hào)也會(huì)得到一個(gè)警告消息(反之亦然)。但通常對(duì)不檢查參數(shù)類型的編譯器卻除外。因此用printf('\n');來(lái)代替printf("\n");通常在運(yùn)行時(shí)得到奇怪的結(jié)果。因?yàn)?#39;\n'代表一個(gè)整數(shù),它被轉(zhuǎn)換為了一個(gè)指針,這個(gè)指針?biāo)赶虻膬?nèi)容是沒(méi)有意義的。
由于一個(gè)整數(shù)通常足夠大,以至于可以放下多個(gè)字符,一些C編譯器允許在一個(gè)字符常量中存放多個(gè)字符,這意味著用'yes'來(lái)代替'"yes"將不會(huì)被發(fā)現(xiàn),后者意味著“包含yes和一個(gè)空字符的四個(gè)連續(xù)存儲(chǔ)區(qū)域中的第一個(gè)的地址”,而前者意味著“在一些實(shí)現(xiàn)定義的樣式中表示由yes聯(lián)合構(gòu)成的一個(gè)整數(shù)”。這兩者之間的任何一致性都是巧合。
簡(jiǎn)單理解,單引號(hào)實(shí)際是整數(shù)的另外的一種表達(dá)方式,該整數(shù)是單引號(hào)里字符的ASCII碼;而雙引號(hào)里是真正的字符,表示由頭指針指向的一片連續(xù)區(qū)域存儲(chǔ)的字符。