日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

單引號復制 單引號

今天看了《C陷阱與缺陷》中對 \”\” 與 \’\’ 的描述,\’\’ 引起的一個字符代表一個整數(shù),整數(shù)值對應于該字符在編譯器采用的字符集中的序列值 。
\”\” 引起的字符串代表的是一個指向無名數(shù)組起始字符的指針 。對這兩個符號產(chǎn)生了興趣,遂打開 VS2010 查看了單引號、雙引號引起的字符在內(nèi)存中的存儲形式 。
實驗方式很簡單,分別查看 \”yes\”/\’yes\’/\’ye\’/\’y\’ 四種字符在內(nèi)存中的存儲形式,代碼如下:
int _tmain(int argc, _TCHAR* argv[])
{
char test1[] = \”yes\”;
int test2 = \’yes\’;
printf(\”%x\\n\”, &test2);
int test3 = \’ye\’;
printf(\”%x\\n\”, &test3);
int test4 = \’y\’;
printf(\”%x\\n\”, &test4);
return 0;
}
實驗結(jié)果如下:

單引號復制 單引號


根據(jù)內(nèi)存中的存儲形式,發(fā)現(xiàn) \’\’ 引起的字符串按照整數(shù)的存儲形式,將第一個字符識別為最高位,最后一個字符識別為最低位,按此順序存入 int 變量 4 個字節(jié)的存儲空間中;
\”\” 引起的變量按照第一個字符存儲在起始地址處,最后一個字符存儲在結(jié)束地址處 。
【單引號復制 單引號】實驗的結(jié)果證實了《C陷阱與缺陷》中的描述,那么當 \’\’ 引起的字符超過 4 個字節(jié)時會出現(xiàn)什么情況呢?再進行一次實驗,代碼如下:
int _tmain(int argc, _TCHAR* argv[])
{
char test1[] = \”yes\”;
int test2 = \’yes\’;
printf(\”%x\\n\”, &test2);
int test3 = \’ye\’;
printf(\”%x\\n\”, &test3);
int test4 = \’y\’;
printf(\”%x\\n\”, &test4);
int test5 = \’yesa\’;
printf(\”%x\\n\”, &test5);
return 0;
}
實驗結(jié)果如下:
單引號復制 單引號


根據(jù)實驗結(jié)果可以看到字符超過 4 個字節(jié),超出了 int 型存儲能力,編譯器報錯,提示常量字符太多 。這樣可以有效提醒給程序猿同學,有可能存在符號輸入錯誤,但是沒有超過 int 型存儲能力時照單全收,沒有任何提示,存在著符號誤用的隱患,以后程序出現(xiàn)問題調(diào)試會相當麻煩 。

    推薦閱讀