總結一下csdn上面的乙個帖子。
cql23 提出乙個問題,請看下面的例子。
#include
#include
using namespace std;
const unsigned int size=10;
const unsigned int pcount=3;
const unsigned int ccount=1;
unsigned int num=0;
int i,j;
handle mutex,fullsem,emptysem;
critical_section csection;
void get()
return 0;
}void main()
~wjh_cmutex()
}#elif defined _linux
if (!m_mutex)
}#endif
}//請求
int acquire()
//釋放
int release()
private:
wjh_mutex* m_mutex;
};//同步守衛型別
class wjh_gurad
m_mutex = _mutex;
_mutex->acquire();
}~wjh_gurad()
m_mutex->release();
}private:
wjh_cmutex* m_mutex;
};#endif
const unsigned int size=10;
const unsigned int pcount=3;
const unsigned int ccount=1;
unsigned int num=0;
int i,j;
handle mutex,fullsem,emptysem;
critical_section csection;
wjh_cmutex g_mutex;
void get()
{ wjh_gurad t_guard(&g_mutex);
cout <<"消費了一件產品" <<" 產品總數:" <<--num <
printf和cout右向左求值
p 等價於 p p 1也就是b的值變成3 函式的壓棧順序是從右到左的 當 p 入棧時,編譯器做了如下操作 先為 p 建立乙個臨時變數 b,並做賦值操作,b p 可想而知此時 b的值是 p 也就是2,賦值後 p做了自增操作 p p 1 所以在printf d d n p,p 中的 p入棧時 p已經變成...
cout與printf的混用問題
在某題的輸出混用了cout與printf 結果輸出的順序出錯。把原因歸結為乙個帶緩衝而乙個不帶緩衝。因為stdio.h中定義了像ungetc 這樣的函式,其作用是將字元放回到輸入流中。可見stdio中也是使用了緩衝的。那麼為什麼cout與printf 混用會發生問題呢?include using n...
cout和printf的混用而產生的順序問題
之前對於cout與printf 混用的結果的認識,源於某年北京賽區某judge的總結。據其稱,某隊在比賽時某題的輸出混用了cout與printf 結果輸出的順序出錯。其把原因歸結為乙個帶緩衝而乙個不帶緩衝。對此金強提出了置疑,因為stdio.h中定義了像ungetc 這樣的函式,其作用是將字元放回到...