c的陷阱
x=y/*p /y除以p所指向的值,得到的結果賦給x/
程式設計師的本意應該是y除以p所指向的值,再把值賦給x,編譯器在看到/*後就認為是註釋的開始,而不會看到p。以上可以重寫為:
x=y/ *p
或者寫成
x=y/(*p)
這樣就可以避免程式出現二義性,在上下文中可能會招惹麻煩
又例如
在老版本的c語言中允許=+來代替+=的含義,這種老版本的編譯器就會將a=-1,
理解為
a =- 1
即a = a - 1
如果程式設計師的本意是a = -1,那就違背了程式設計師設計的程式的本意
諸如這樣的問題,可能作為一個資深的c語言程式設計者,也會在不經意間犯這樣的錯誤。那這你就很有必要去看一下《c陷阱與缺陷》這本書了。
參考文獻 《c陷阱與缺陷》
相關文章
- C/C++ 中的算術及其陷阱C++
- c語言-記錄閱讀《c缺陷與陷阱》C語言
- 《C缺陷與陷阱》讀書筆記筆記
- c++隱式型別轉換存在的陷阱C++型別
- C陷阱和缺陷,必須知道的495個C語言問題C語言
- 聰明的陷阱
- python關於+=的陷阱Python
- WebRTC 的三個“陷阱”Web
- IntegerCache的妙用和陷阱
- foreach陷阱
- ORM 陷阱ORM
- Java 中比較 BigDecimal 的陷阱JavaDecimal
- 多元泰勒展開的陷阱
- 上傳檔案的陷阱
- Python字典遍歷的陷阱Python
- Java List的remove()方法陷阱JavaREM
- Rust克隆陷阱?Rust
- lua unpack 陷阱
- Spring WebFlux的明顯陷阱 - ŁukaszKyćSpringWebUX
- 程式設計師的“能力陷阱”程式設計師
- 箭頭函式this指向的陷阱函式
- 微服務的歷史與陷阱微服務
- 十二個坑爹的Python陷阱Python
- 業務設計的靈活性陷阱
- Java 8並行流的效能陷阱Java並行
- 坑爹的Python陷阱(避坑指南)Python
- Go slice切片的“陷阱”和本質Go
- 簡單的網頁彈窗陷阱網頁
- 資料驅動背後的“陷阱”
- python的socket.recv函式陷阱Python函式
- Bug or Feature?藏在 requests_html 中的陷阱HTML
- GNN 模型評估的一些陷阱GNN模型
- GNN模型評估的一些陷阱GNN模型
- 你掉進過“偽敏捷”的陷阱嗎?敏捷
- Go標準庫flag包的“小陷阱”Go
- Solidity陷阱:以太坊的隨機數生成Solid隨機
- 優秀技術人的管理陷阱(轉)
- CSS Grid中的陷阱和絆腳石CSS