2012-01-17 13 views
13

मैं निम्नलिखित कार्य हो:मुझे क्यों मिल रहा है "शून्य मान को अनदेखा नहीं किया जाना चाहिए"?

void getdata(int arr[], int n) 
{ 

    for (int i = 0; i < n; i++) { 
     int a = srand(time(NULL)) 
      arr[i] = a; 
    } 
} 

और मैं main में इसे कहते:

getdata(arr,1024); 

मैं मिलता है लेकिन मुझे समझ नहीं आता क्या है "के रूप में यह होना चाहिए नजरअंदाज नहीं किया शून्य मान" गलत। मुझे यह त्रुटि क्यों मिलती है?

+3

पीआरएनजी को बार-बार शुरू नहीं करते हैं। प्रति प्रोग्राम रन एक बार पर्याप्त है। – pmg

+0

त्रुटि क्या है –

+0

arr कैसे घोषित किया गया है? आपको क्या त्रुटि मिल रही है? आप किस शून्य मूल्य के बारे में बात कर रहे हैं? –

उत्तर

9

srand कुछ भी वापस नहीं करता है ताकि आप a को इसके रिटर्न वैल्यू के साथ प्रारंभ नहीं कर सकें क्योंकि, ठीक है, क्योंकि यह कोई मान नहीं देता है। क्या आप rand पर भी कॉल करना चाहते थे?

+0

नहीं, मैं केवल विधि – abc

+0

पर कॉल करता हूं मेरा मुख्य – abc

+2

@mertmetin है तो फिर ['srand'] (http://www.cplusplus.com/reference/clibrary/cstdlib/srand/) पर कॉल न करें, लेकिन [' rand'] (http: // www। cplusplus.com/reference/clibrary/cstdlib/rand/)! समझ गया? –

24
int a = srand(time(NULL)); 

srand के लिए प्रोटोटाइप void srand(unsigned int) है (बशर्ते आप <stdlib.h> शामिल)।
इसका मतलब है कि यह कुछ भी नहीं देता है ... लेकिन आप वैल्यू का उपयोग कर रहे हैं (???) प्रारंभ करने के लिए, a पर।


संपादित करें: यह आप क्या करने की जरूरत है:

#include <stdlib.h> /* srand(), rand() */ 
#include <time.h> /* time() */ 

#define ARRAY_SIZE 1024 

void getdata(int arr[], int n) 
{ 
    for (int i = 0; i < n; i++) 
    { 
     arr[i] = rand(); 
    } 
} 

int main(void) 
{ 
    int arr[ARRAY_SIZE]; 
    srand(time(0)); 
    getdata(arr, ARRAY_SIZE); 
    /* ... */ 
} 
+0

मैं एआर [i] = srand (समय (NULL) असाइन कैसे कर सकता हूं) – abc

+4

@mertmetin आप नहीं कर सकते! यह पूरी बात है। –

+0

srand (समय (NULL)) arr [i] = rand()% 100 srand फ़ंक्शन क्या है? – abc

4
int a = srand(time(NULL)) 
     arr[i] = a; 

 arr[i] = rand(); 

किया जाना चाहिए और अपने कार्यक्रम के बहुत शुरुआत में कहीं srand(time(NULL)) डाल दिया।

15

मूल पोस्टर एक जीसीसी कंपाइलर त्रुटि संदेश उद्धृत कर रहा है, लेकिन यहां तक ​​कि इस धागे को पढ़कर, यह स्पष्ट नहीं है कि त्रुटि संदेश ठीक से संबोधित किया गया है - @pmg's answer को छोड़कर। (+1, btw)


त्रुटि: के रूप में यह

यह एक जीसीसी त्रुटि संदेश का अर्थ है कि एक समारोह की वापसी-मान 'शून्य' है होना चाहिए नजरअंदाज नहीं किया शून्य मूल्य है, लेकिन कि आप इसे एक गैर-शून्य चर के लिए असाइन करने का प्रयास कर रहे हैं।

उदाहरण:

void myFunction() 
{ 
    //...stuff... 
} 

int main() 
{ 
    int myInt = myFunction(); //Compile error! 

    return 0; 
} 

आप पूर्णांकों, या किसी भी अन्य प्रकार के लिए शून्य आवंटित करने के लिए अनुमति नहीं है।

ओ पी की स्थिति में:

int a = srand(time(NULL)); 

... अनुमति नहीं है। srand(), according to the documentation, शून्य देता है।, के बावजूद यह डुप्लिकेट जा रहा है,

मैं जवाब हूँ क्योंकि इस शीर्ष परिणाम है:

इस सवाल का डुप्लिकेट है इस त्रुटि संदेश के लिए Google पर। चूंकि यह धागा शीर्ष परिणाम है, यह महत्वपूर्ण है कि यह धागा एक संक्षिप्त, स्पष्ट, और आसानी से खोजने योग्य परिणाम देता है।

1

"शून्य मान को अनदेखा नहीं किया जाना चाहिए क्योंकि यह होना चाहिए" यह त्रुटि होती है जब srand (time (NULL)) जैसे फ़ंक्शन कुछ वापस नहीं करते हैं और आप इसका इलाज कर रहे हैं क्योंकि यह कुछ वापस कर रहा है। कतार में पॉप() फ़ंक्शन के मामले में, यदि आप एक चर में पॉप किए गए तत्व को संग्रहीत करेंगे तो आपको एक ही त्रुटि मिल जाएगी क्योंकि यह कुछ भी वापस नहीं करती है।

संबंधित मुद्दे