《C缺陷與陷阱》讀書筆記
一、
為什麼很多程式設計規範上要求單字元符號兩邊用空格隔開呢?如“a = 2”最好不要寫成"a=2"。在《C陷阱與缺陷》中詞法陷阱部分講到:如y = x/*p,原本想表達的意思是p指標指向除數,但實際編譯過程中,編譯器會將/*理解為一段註釋的開始,編譯器將不斷地讀入字元,直到*/出現為止(這一錯誤也在《C專家程式設計》的46頁中講過,舉的例字是"ratio= *x/*y")。也就是說,改語句直接將x的值賦值給y,根本不會顧及到後面出現的*p。但是如果將上面的語句寫成“y = x / *p”或者"y=x/(*p)",得到的實際效果才是一樣的。
理由:c語言編譯器遵循貪心演算法,從左到右將字元一個個讀入,如果該字元可能組成一個符號,那麼再讀入下一個字元。單個符號直接不能有空格,否則該符號將被分解為2個獨立的部分。
二、
如果整型的第一個字元時數字0,那麼該常量將被視做八進位制數,0195會被解釋為141(十進位制)。
三、
單引號括起的一個字元代表一個整數,雙引號括起的一個字元代表一個指標。
四、(待續)
相關推薦
《C缺陷與陷阱》讀書筆記
一、 為什麼很多程式設計規範上要求單字元符號兩邊用空格隔開呢?如“a = 2”最好不要寫成"a=2"。在《C陷阱與缺陷》中詞法陷阱部分講到:如y = x/*p,原本想表達的意思是p指標指向除數,但實際編譯過程中,編譯器會將/*理解為一段註釋的開始,編譯器將不斷地讀入字元,直
C語言缺陷與陷阱語義分析
語義分析 (程式設計師本意是希望表示某種事物,而實際表示的卻是另外一種事物) 1. 指標和陣列 陣列值必須注意的兩點:(1)C語言只有一維陣列,且陣列大小必須在編譯期作為一個常數確定下來;(2)對一個數組只能進行:確定該陣列的大小,以及獲得指向該陣列下標為0
C語言缺陷與陷阱(3)
語義分析 (程式設計師本意是希望表示某種事物,而實際表示的卻是另外一種事物) 1. 指標和陣列 陣列值必須注意的兩點:(1)C語言只有一維陣列,且陣列大小必須在編譯期作為一個常數確定下來;(2)對一個數組只能進行:確定該陣列的大小,以及獲得指向該陣列下標為0的元
《C#圖解教程》讀書筆記之四:類和繼承
intern html pan 類中訪問 ted obj 小寫 his new 本篇已收錄至《C#圖解教程》讀書筆記目錄貼,點擊訪問該目錄可獲取更多內容。 一、萬物之宗:Object (1)除了特殊的Object類,其他所有類都是派生類,即使他們沒有顯示基類定義。
<C和指針---讀書筆記6>
返回值 log enter val 其他 9.png 筆記 align eight 指針 指針是一種變量,和int、float、char一樣,是一種基本的變量。只不過它比較抽象一些。 我們知道在C語言中,聲明一個變量a、b,編譯器會為其分配一個物理地址 addr_1 、ad
<C和指針---讀書筆記11>
con 針對 返回 正常的 字節 查找 spa 讀書 mage 對於構成字符串的,string.h封裝了許多現成的函數以供使用。 字符串,不論是常量字符串還是借用數組尾綴’\0’。 這個strings.h裏面的函數都是針對的字符串。 即以’\0’做為截至。 如果你不幸的對
軟件需求與分析讀書筆記3
可能 生產力 gpo 目的 浪費 需求工程 clas 讀書筆記 讀書 這本厚厚的書終於被我讀完了,現在開始最後一篇讀書筆記。 最後幾章主要講的是需求的文檔和需求過程的管理。即需求分析必須標準化。我們在需求的過程中必須學會用建模的方法來規範需求工程。需求分析的
新一代網絡建設理論與實踐讀書筆記-雲計算
雲計算一、雲計算定義: 維基百科:雲計算是一種基於互聯網的新計算方式,通 過互聯網上異構、自治的服務為個人和企業提供按需即取的計算。 1.雲計算描述共同特征:雲是一種服務 按需使用 靈活付費 2.特點:雲計算是一種新的IT服務模式,支持大規模計算資源的虛擬化, 提供按需計
?機器視覺算法與應用讀書筆記(算法)
問題: isp SQ prime 取出 三個點 出圖 第一個 如何 1.數據結構 2.圖像增強 1. 灰度值變換 2. 輻射標定 3. 圖像平滑 1. 時域去噪法 2. 空間域去噪法 均值濾波器 遞歸線性濾波器:將上次計算得到的值帶入到下次的值中 缺點:噪聲並不能被全部消
深度探索C++對象模型讀書筆記(一)
復雜 理解 image play 基礎上 isp 靜態 布局 bject 《深度探索C++對象模型》這本書也算是學習C++面向對象編程的必備書了,打算花上幾天先簡單的看一遍,這種書看上好幾遍也不一定能理解太多,慢慢積累一點一滴吃透就好。下面把我看書過程中覺得比較有意義的摘錄
代碼閱讀方法與實踐 讀書筆記
mac 大型 CP 還要 問題 編輯器 得到 架構 很快 PB15061359 王亞正 對這本書的內容做一個小的總結: 一、第一章 1.將代碼作為文獻: 註意要有選擇地閱讀代碼,同時,還要有自己的目標。明白自己是想學習新的模式、編碼風格、還是滿足某些需求的方法
Redis設計與實現讀書筆記-AOF,RDB,復制
atomic 人工 only rpo script 發送 讀書筆記 競爭條件 產生 Redis Redis特性: 1.Redis是一個鍵值對數據庫服務器, 服務器中通常包含著任意個非空數據庫, 而每個非空數據庫中又可以包含任意個鍵值對,為了方便起見, 我們將服務器中的非空數
《C程式設計習慣》讀書筆記(1-6章)
最近在看兩本國人寫的書:C程式設計習慣、Linux C程式設計。越看越發現如獲至寶。有時真覺得,看國外的書,都能將晦澀概念深入淺出解釋通透,而國內的書,能切合國人的習慣來解釋和應用知識。以前只青睞國外的書,這兩本國內的電子書本來只想簡單瀏覽一遍鞏固基礎,現在越看越想做讀書筆記,因為實在是很多看似
從Paxos到Zookeeper分散式一致性原理與實踐 讀書筆記之(一) 分散式架構
1.1 從集中式到分散式 1 集中式特點 結構簡單,無需考慮對多個節點的部署和節點之間的協作。 2 分散式特點 分不性:在時間可空間上隨意分佈,機器的分佈情況隨時變動 對等性:計算機之間沒有主從之分,所有計算機之間是對等的。副本是分散式系統對資料
資料結構(C語言版)讀書筆記1(基本概念和術語)
資料: 所有輸入到計算機中,並被計算機程式處理的符號的總稱。 資料元素: 資料的基本單位,在計算機程式中經常被當做一個整體進行考慮和處理 資料物件: 性質相同的資料元素的集合,是資料的一個子集。 資料結構: 相互之間存在一種或多種特定關係的資料元素的集合。這種資料元素之間
C#委託與事件學習筆記
委託事件學習筆記 本文是學習委託和事件的筆記,水平有限,如有錯漏之處,還望大神不吝賜教。 什麼是委託?從字面意思來解釋,就是把一個動作交給別人去執行。在實際開發中最常用的就是使一個方法可以當做一個引數傳遞,以便在方法中可以根據實際情況實現不同的功能。 什麼是事件?事件就是發生的事情,例如點選了一
5.4基於範圍的for迴圈(c++11)之讀書筆記
基於範圍的for迴圈,簡化了迴圈了任務:對陣列(或者容器,如vector和array)的每個元素執行相同的操作,如下例所示: double prices[5]={4.99,10.99,6.87,7.99,8.49}; for (double x:prices) cout<
《C#高階程式設計》讀書筆記-1
《C#高階程式設計》讀書筆記 C#型別的取值範圍 名稱 CTS型別 說明 範圍 sbyte System.SByte
Primer C++第五版 讀書筆記(一)
Primer C++第五版 讀書筆記(一) (如有侵權請通知本人,將第一時間刪文) 1.1-2.2 章節 關於C++變數初始化: 初始化不是賦值,初始化的含義是建立變數時賦予其一個初始值,而賦值的含義是把物件的當前值擦除,以一個新值來替代. 定義一個名為a的int變數並初始化為0,有以下4種方法
C語言深度解剖讀書筆記2
struct 平時我們要求函式的引數儘量不多於四個,如果函式的引數多於四個使用起開非常容易出錯(包括每個引數的意義和順序都容易弄錯),效率也會降低(與具體CPU有關)。這個時候,就可以用結構體壓縮引數個數。 空結構體多大 結構體所佔的記憶體大小是其成員記憶體之和,如果成員記憶體為0,例如