查看完整版本: 有關if的小小基礎問題...
頁: [1]

阿次阿 發表於 2017-3-4 11:06 AM

有關if的小小基礎問題...

本帖最後由 阿次阿 於 2017-3-4 12:25 PM 編輯

小弟一直不懂if(star)這裡是什麼意思因為沒有比較任何東西,不知道他這邊再判定什麼
請各位鞭小力一點><
<div></div>

include 發表於 2017-3-4 07:37 PM

if 括號裡的東西是判斷真(true)或是假(false)
而判斷的標準是0為假其他一切非0的都是真
一般看到 star == 1 是 == 做了一次運算
當 star 是 1 的時候他會回傳 1 這個值
if 看到了就會認為他是真
所以這邊 if(star) 的意思會跟 if(star != 0) 幾乎一模一樣
但是 if(star) 會比 if(star != 0) 少了一個運算

CoNsTaRwU 發表於 2017-3-5 07:14 PM

本帖最後由 CoNsTaRwU 於 2017-3-6 11:43 PM 編輯

對 C:
所有 if 小括號內的表達式會被轉型為 int 之後判斷是否不等於 0
也就是說,以下兩句會被 C 視為相等的
if (expr) stmt
if ((int)(expr) != 0) stmt
對 C++:
會被轉型為 bool 之後判斷是否等於 true
以下兩句在 C++ 中可以看成是相等的
if (expr) stmt
if ((bool)(expr) == true) stmt
以上兩個例子中
expr 可以是任意表達式 (變數、判斷式、計算、函數呼叫、任何可以寫在 if 小括號中的東西)
stmt 可以是任意敘述 (區塊、表達式、任何以分號結尾的東西)
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

johnwanz 發表於 2017-3-6 09:27 AM

這是自然語法, 撰寫方式, 以及電腦語法的模糊地帶.

就多數電腦語言而言, 0->視為FALSE, 非0->視為TRUE.
所以 if(var) => 只是依據var是否為零, 決定其判斷條件是FALSE/TRUE

在自然語言閱讀的時候, 其實就語意上並不容易判斷這種撰寫方式, 就我個人意見, 有兩種方式,一, 在命名上稍微花點心思, 就能解決這樣的現象, 二, 對於有非FALSE/TRUE的比較, 避免Magic Number, 以具名常數替代純數字.

ex:
if(star) =>...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

jd3 發表於 2017-3-7 01:20 AM

路過建議你的 code 排版一下比較好<br><br><br><br><br><div></div>

o_g349 發表於 2017-9-13 12:30 PM

include 發表於 2017-3-4 07:37 PM static/image/common/back.gif
if 括號裡的東西是判斷真(true)或是假(false)
而判斷的標準是0為假其他一切非0的都是真
一般看到 star == 1 ...

沒有少了一個運算這回事,兩者編譯出來的組合語言是一樣的,一樣是判斷 star 是否不等於 0,兩個都會生成 test eax, eax 這樣的組合語言...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>
頁: [1]