站長資訊網
最全最豐富的資訊網站

C 語言中單引號與雙引號的區別

今天看了《C陷阱與缺陷》中對 “” 的描述, 引起的一個字符代表一個整數,整數值對應于該字符在編譯器采用的字符集中的序列值。

“” 引起的字符串代表的是一個指向無名數組起始字符的指針。對這兩個符號產生了興趣,遂打開 VS2010 查看了單引號、雙引號引起的字符在內存中的存儲形式。

實驗方式很簡單,分別查看 “yes”/’yes’/’ye’/’y’ 四種字符在內存中的存儲形式,代碼如下:

int _tmain(int argc, _TCHAR* argv[])  {      char test1[] = "yes";      int test2 = 'yes';      printf("%xn", &test2);      int test3 = 'ye';      printf("%xn", &test3);      int test4 = 'y';      printf("%xn", &test4);      return 0;  }

實驗結果如下:

C 語言中單引號與雙引號的區別

根據內存中的存儲形式,發現 引起的字符串按照整數的存儲形式,將第一個字符識別為最高位,最后一個字符識別為最低位,按此順序存入 int 變量 4 個字節的存儲空間中;

“” 引起的變量按照第一個字符存儲在起始地址處,最后一個字符存儲在結束地址處。

實驗的結果證實了《C陷阱與缺陷》中的描述,那么當 引起的字符超過 4 個字節時會出現什么情況呢?再進行一次實驗,代碼如下:

int _tmain(int argc, _TCHAR* argv[])  {      char test1[] = "yes";      int test2 = 'yes';      printf("%xn", &test2);      int test3 = 'ye';      printf("%xn", &test3);      int test4 = 'y';      printf("%xn", &test4);      int test5 = 'yesa';      printf("%xn", &test5);      return 0;  }

實驗結果如下:

C 語言中單引號與雙引號的區別

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

原文地址:https://blog.csdn.net/u013541620/article/details/43172891

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
亚洲精品自产拍在线观看| 女人高潮内射99精品| 精品国产乱码久久久久软件| 久久这里只精品国产99热| 成人区人妻精品一区二区不卡视频| 日韩精品一区二区三区不卡| 国产乱码精品一区二区三区四川| 国产午夜精品一区二区三区极品| 国产精品久久久久影院色| 3d动漫精品啪啪一区二区免费| 午夜精品久久久久久中宇| 国产精品丝袜黑色高跟鞋| 自拍偷在线精品自拍偷| 成人精品视频一区二区三区| 国产精品无码不卡一区二区三区| 亚洲成人国产精品| 午夜精品久久久久久| 国产一区二区三区日韩精品| 成人日韩熟女高清视频一区| 午夜精品久久久久蜜桃| 国产精品国产三级国产AV′| 国产精品国产三级国快看| 国产精品午夜小视频观看| 国产精品极品美女自在线| 国产精品萌白酱在线观看| 国产老女人精品免费视频| 国产精品自产拍在线网站| 国产精品哟哟视频| 亚洲免费日韩无码系列| 亚洲精品国产日韩无码AV永久免费网| 亚洲无码日韩精品第一页| 日韩精品久久久久久免费| 中文字幕日韩精品麻豆系列| 久久久久久久久无码精品亚洲日韩| 日韩影院一级在线| 精品人妻一区二区三区四区| 九九在线精品视频| 精品国产福利盛宴在线观看| 中文字幕无码精品亚洲资源网| 中文字幕在线精品视频入口一区| 国产精品色内内在线播放|