[問題] 關於IF呼叫副程式return 1 或 0的問題

看板C_and_CPP (C/C++)作者 (Dennis)時間12年前 (2014/01/06 14:19), 編輯推噓2(206)
留言8則, 5人參與, 最新討論串1/1
小弟在寫一個習題 語言是:C 題目如下:   寫一個程式,接受一個整數的輸入,然後顯示所有小於或等於該數的質數 以下是小弟參考課本然後寫出來的程式 #include<stdio.h> #include<stdlib.h> int isp (int); /*確認是不是質數用的*/ int main (void) { int num, i; printf("key in num:"); scanf("%d", &num); for (i = 2; i <= num; i++) if (isp(i)) /*把i的質送到isp程式運算*/ printf("%d ", i); printf ("\n"); system ("pause"); return 0; } int isp (int n) /*算i的質,如果是質數傳回1,不是則0*/ { int a; for (a = 2; a * a <= n; a++) if (n % a == 0) return 0; return 1; } 疑惑的點是:為什麼另一個程式return以後, if (isp(i)) /*把i的質送到isp程式運算*/ printf("%d ", i); 這段if的程式碼會在return 1的時候才做 是if 這個statement的功能嗎? 上網查了相關的if return 1這類的都找不到我想要的解答XDD 希望有高手能夠提點迷津,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 192.192.154.48 ※ 編輯: garycan 來自: 192.192.154.48 (01/06 14:27)

01/06 14:32, , 1F
if這個function ... 這太可怕了,現在不是期末嗎,你到
01/06 14:32, 1F

01/06 14:33, , 2F
底期中是怎麼上課的可以上到 "if這個function" :|
01/06 14:33, 2F
謝謝指教,已改正。 ※ 編輯: garycan 來自: 192.192.154.48 (01/06 14:39)

01/06 17:53, , 3F
if(值為true){執行內容} c的if, 0當false, 其他值會
01/06 17:53, 3F

01/06 17:54, , 4F
當作true,所以只要不為0就會執行,不是只有1才做
01/06 17:54, 4F

01/06 18:18, , 5F
了解,謝謝你。
01/06 18:18, 5F

01/09 05:24, , 6F
if中的內容只要能「隱式轉換」成true就可以了。
01/09 05:24, 6F

01/09 11:45, , 7F
這邊沒有做隱性轉型, 因為非零 "就是" true
01/09 11:45, 7F

01/09 11:45, , 8F
在 C++ 裡面才有隱性轉型成 bool 的問題
01/09 11:45, 8F
文章代碼(AID): #1IoaiDRA (C_and_CPP)
文章代碼(AID): #1IoaiDRA (C_and_CPP)