!和~相同點:都不會改名變數原來的值,
!和~的區別:!表示邏輯非,~表示二進制(補碼)按位取反,取反包含符號位 ,另外~只能對整數進行操作,而!可以對浮點數進行操作,!對浮點數進行操作時,即對于非零的浮點數取邏輯非,用%d進行列印結果是0,用%f進行列印結果是0.000000(由int -> float的轉變),這個結果在while回圈中被認為是假,一段代碼為證:

個人猜測:C語言真偽的判斷是根據記憶體中某一個代碼塊來定的,只要這個代碼塊中存盤的全0,則為假;否則為真
另外要明確兩點:
- 在C語言中,0為假,非0為真,在VS2015中,默認的真為1,假為0,由以下代碼可以看到對非1的
真數兩次取邏輯反后結果為1, - 計算機記憶體中存放的數字以二進制補碼的形式存盤

?一段有趣的代碼?

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/319847.html
標籤:其他
下一篇:Android實作頁面跳轉
