मैं निम्नलिखित कोड को चलाने के लिए कोशिश कर रहा हूँ:सी जबकि पाश अन-समझाया व्यवहार
#include <sys/time.h>
#include <stdio.h>
int main()
{
unsigned int ms, oldms = 0,dif;
struct timeval tv;
while(1)
{
gettimeofday(&tv, NULL);
ms=tv.tv_sec;
//printf("%d\n",ms-oldms);
dif=ms-oldms;
if(dif>3)
{
printf("3 seconds up");
oldms=ms;
}
}
}
मैं इसे "ऊपर 3 सेकंड" हर 3 सेकंड के बाद मुद्रित करने के लिए उम्मीद कर रहा हूँ, लेकिन यह है कि प्रदर्शित नहीं करता है संदेश। मैंने जीडीबी का उपयोग करके इसे डीबग करने का प्रयास किया लेकिन कुछ भी गलत नहीं लगता है और अभी भी कोई आउटपुट नहीं है। डीबग करने का प्रयास करते समय, मैंने एक printf कथन जोड़ा और जादुई रूप से आउटपुट देखा जा सकता है।
यदि मैं // printf ("% d \ n", ms-oldms) को हटाने के बाद प्रोग्राम चलाता हूं; बयान, फिर से कोई आउटपुट नहीं है। मुझे यकीन नहीं है कि क्या हो रहा है और क्या यह किसी भी चीज़ पर निर्भर है।
$ जीसीसी --version जीसीसी (उबंटू 4.8.2-19ubuntu1) 4.8.2
, अपने printf – Jorgel
@Jorgel पर एक नई पंक्ति डाल printf में एक नई पंक्ति डाल काम का प्रयास करता है। लेकिन, मैं अभी भी इस व्यवहार के बारे में उलझन में हूं। यह पहली बार हुआ जब मैंने इसका सामना किया। – kid
आपके पास अनंत लूप है - यह "पहली बार" है। यदि आप 'printf' के बाद' ब्रेक 'जोड़ते हैं तो भी नई लाइन के बिना यह ठीक काम करेगा। – i486