cout操作符的遞迴

2022-04-20 12:10:59 字數 514 閱讀 3459

參考:

下面輸出結果是多少?

#include using

namespace

std;

int g=0

;template

intfoo(t a)

intmain()

結果是:輸出:t 輸出:1 輸出:1 輸出:2.2 輸出:0 輸出:3     234321

原因:1.cout操作符的遞迴呼叫和從右向左的順序。   即:比如在 cout《引數1《引數2<<....  cout的引數入棧的順序是引數2、引數1。在入棧之前(return值入棧前,先把相應的函式執行),這也是先列印出  輸出:t 的原因

3.區域性static(在函式內),只進行一次初始化,儲存在全域性資料區,所以foo(1)執行後value值為2,當下乙個foo(3)時,static int value = ++g初始化語句沒有執行。所以value仍為2

總結:1.cout遞迴呼叫  2.模板函式的不同  3.區域性static的初始化

cout輸出操作符求值順序

在逛論壇的時候發現這個問題的,然後就動手查了下,也寫了下 測試 不過首先應該宣告的是 c 中對於cout後面的表示式的求值順序是未定義的,具體的執行結果要由編譯器的實現來決定.本人是在vc 6.0下編譯的.測試 include using namespace std int fun int main...

MySQL的and操作符和or操作符

有時對where的要篩選的列不止乙個時,那麼就用到了and操作符和or操作符,and操作符顧名思義的意思是 並且 而or操作符的意思是 或者 比如以部門員工表為例 查詢部門編號為d001並且入職日期為 1985 02 02的員工編號,那麼就要用到and操作符 那如果是查詢部門編號為d001或者入職日...

c語言操作符 位操作符 移位操作符

1 按位操作符 1.1 按位 與 雙目運算子 僅當兩個運算元都為1時,結果為1,否則為0。參與運算的數以補碼方式出現。例 9 5 1 0000 1001 9的補碼 0000 0101 5的補碼 0000 0001 1的補碼 應用 a 通常將某些位清零或保留某些位。例如 將a的高八位清零,保留低八位,...