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

        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號
        主站蜘蛛池模板: 2021久久精品国产99国产精品| 91精品婷婷国产综合久久| 精品999在线| 爽爽精品dvd蜜桃成熟时电影院| 国产精品亚洲美女久久久| 国产成人精品无码一区二区| 香蕉国产精品麻豆亚洲欧美日韩精品自拍欧美v国 | 亚洲欧美精品SUV| 精品无码国产污污污免费网站国产 | 少妇人妻无码精品视频| 久久精品国产亚洲一区二区三区| 久久九九青青国产精品| 99久久精品国内| 精品国产福利在线观看| 中文字幕乱码中文乱码51精品| 思思久久99热免费精品6| 久久久久亚洲精品无码网址 | 999国内精品永久免费视频| 日韩精品无码熟人妻视频| 在线观看91精品国产网站| 亚洲第一永久AV网站久久精品男人的天堂AV | 精品熟女少妇aⅴ免费久久| 国产乱子伦精品免费视频| 国产成人精品在线观看| 国产精品国产三级国产AⅤ| 亚洲天堂久久精品| 99热这里只有精品国产66| 97精品国产自在现线免费观看 | 91麻豆精品视频在线观看| 国产精品久久久久久吹潮| 国产精品无码一区二区三区电影| 国产精品扒开腿做爽爽爽视频| 国内精品久久久久久99蜜桃| 国产精品一区二区av| 97精品久久天干天天天按摩| 2022国产精品不卡a| 九九热在线视频观看这里只有精品| 狠狠色丁香婷婷综合精品视频| 日本精品在线视频| 99热日韩这里只有精品| 久久精品成人影院|