簡體   English   中英

返回值中的函數混淆,顯式的正確和錯誤是什么?

[英]Function confusion in return value, what is true and false explicitly?

我是C語言的新手,在這里的StackExchange和所有其他來源中, 0為成功,否則為false 在此打印質數的函數中,為什么僅在return值為1時才打印質數?

就像如果我去(is_prime(num) == 0) ,那么它不會打印素數,但是如果只是說is_prime(num)它會自動假設(is_prime(num) == 1)

這讓我感到困惑,請澄清一下,因為該值將在0和1之間切換,但是為什么會自動偏置?

int is_prime(int num){
   int isPrime = 1;
   int i;

   for(i = 2; i <= sqrt(num); i++){
      if(num % i == 0){
         isPrime =  0;
      }
   }

   return isPrime;
}

我是C語言的新手,在這里的StackExchange和所有其他來源中,0為成功,否則為false。

那是倒退。 在C中,0為false,非零值為true。

if (number)    <==>   if (number != 0)
if (!number)   <==>   if (number == 0)

在大多數情況下都是如此,並且是最常見的整數→布爾關系。 映射相反的情況有一些例外:

  • main()的返回值為0(表示成功),非零(表示失敗)。 這樣做的原因是,如果程序失敗,則可能需要通過返回不同的退出代碼來區分錯誤。 例如,1表示“錯誤的命令行參數”,2表示“找不到文件”,3表示“無法連接到服務器”,等等。這些退出代碼的含義取決於應用程序。

  • 許多POSIX系統調用,例如close()connect()使用相同的想法,成功則返回0,錯誤則返回-1。 對於這些功能,必須編寫if (connect(...) != 0)而不是if (connect(...))

請注意,這些異常不是C語言本身的一部分,而是具有常用的C函數。

在if語句中,或在測試布爾值(True或false)的任何情況下,在C中,至少0表示false,任何非零整數表示true。

如果由於某種原因,如果給定輸入x ,isPrime函數返回-17 ,則如果將isPrime(x)視為布爾值,則仍然認為isPrime(x)為true,因此,如果條件條件為isPrime(x)的if塊中包含某些代碼, ,該代碼將被運行,因為-17為非零。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM