[英]what happens when function doesnt explicitly return a value? can't figure out how the output of the code is coming
[英]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.