欧美日韩不卡一区二区三区,www.蜜臀.com,高清国产一区二区三区四区五区,欧美日韩三级视频,欧美性综合,精品国产91久久久久久,99a精品视频在线观看

試題

計算機二級C++逗號操作符應(yīng)用方法詳解

時間:2025-03-03 04:22:18 試題 我要投稿
  • 相關(guān)推薦

2016年計算機二級C++逗號操作符應(yīng)用方法詳解

  不少C++ newbie都會問到這問題,大家對+-*/自然是認識的了,對其他的%!&|之類的也不覺得陌生,但是逗號操作符?可能有一半的人會說不清楚它到底是干啥的。

  其實,我們是經(jīng)常會用到逗號操作符的,但是并不是所有代碼里出現(xiàn)的逗號都是逗號操作符。

  讓我們先從一個類的示例代碼開始:

  class mynum

  { public: mynum(double ndb,...)

  { //init with arguments }

  }; class someclass

  { someclass(): num(3,4) ,a(0) ,b(0) ,c(15)

  { int i,j; i=1,2; //int x=1,2; for(;b<10;++b,--c)

  { ++a; }

  } mynum num; int a; int b,c;

  };

  在這段代碼里,逗號在5,13-16,18-20,27行都出現(xiàn)了。

  現(xiàn)在先讓我們來看看C++逗號操作符是啥意思:

  一個包含逗號的表達式首先計算逗號左邊的表達式,然后計算逗號右邊的表達式;整個表達式的結(jié)果是逗號右邊表達式的值。

  然后我們看看上面的代碼:

  第5行是在mynum類的構(gòu)造函數(shù)里出現(xiàn)的逗號,只是用來區(qū)分開第一個double類型的參數(shù)和后面的可變參數(shù)。這是一個特例,如果在構(gòu)造 mynum對象的時候,本來是要傳入3.4作為第一個參數(shù)的,結(jié)果不小心把小數(shù)點變成了逗號的話,3.4就變成了兩個參數(shù)3和4——比如在第13行的情況。類似這樣的情況編譯器不會報錯,程序也能運行,但是mynum類里的成員變量可能就因為構(gòu)造函數(shù)傳入的變量值變化而導(dǎo)致程序運行結(jié)果完全不一致了。這兩個逗號都不是逗號操作符了。

  第14,15,16行的逗號,也不是逗號操作符。這三個逗號只是用來間隔構(gòu)造函數(shù)的成員變量初始化列表。

  第18行的int i,j;是大家都很常用的變量聲明的語句,逗號在這里,也只是起了一個間隔變量聲明的作用,也不是逗號運算符。

  第19行的逗號,如果不認識C++逗號操作符的話,一定會認為這肯定是寫錯了!其實這正是逗號操作符了。讓我們看看,經(jīng)過i=1,2;這個語句后,i 的值應(yīng)該是多少呢?按照之前逗號操作符的定義,我們好像可以很輕松的得出i=2。然而,這個答案是錯的!你在得出錯誤答案的時候,忽略了一個重要的因素 ——運算符優(yōu)先級!由于=號的優(yōu)先級更高,所以i=1,2;這個語句相當(dāng)于(i=1),2; ,如果要得到期望的2,我們應(yīng)該這樣來寫i=(1,2);。下面的代碼可以驗證這個說法的(注意第3行是無意義代碼,但是可不是錯誤代碼哦!)

  int i,j; i=1,2; 3,4; j=(1,2); printf("%d\n%d\n",i,j);

  繼續(xù)看第一份代碼里的第20行,這是一個for循環(huán)代碼。這里的逗號,也是逗號操作符哦。其實for循環(huán)也是逗號操作符經(jīng)常出現(xiàn)的地方哦。 for循環(huán)里只能寫一個表達式,而逗號表達式這個時候就可以讓你完成兩個甚至多個表達式的計算。比如“for(;b<10;++b,--c)”,+ +b和--c就會在每次循環(huán)中都被執(zhí)行到。

  第27行就無須多說了。也就是一普通的變量聲明語句,這里的逗號也不是C++逗號操作符的。

  總的來說,逗號操作符并不是一個非常常用的操作符,它只在某些特定的上下文環(huán)境里會有很好的效果,同時,在編碼中還要非常小心錯誤的輸入的逗號引發(fā)錯誤的問題。

  比如逗號和括號就會引發(fā)一些潛在問題,如果在編碼的時候一疏忽就會產(chǎn)生一些難以追查的隱藏bug,只有遵守一些既定的編碼規(guī)范,養(yǎng)成良好嚴(yán)謹?shù)木幋a習(xí)慣,才有助于避免一些諸如此類的問題出現(xiàn)?纯聪旅娴拇a:

  int myadd(int i,int j,int k) { return i+j+k; } int myadd(int i,int j) { return i+j; } int main() { for(int x=0;x<9;++x) { printf("%d",myadd((2,3),4)); } }

  由于在第15行,錯誤的添加了括號(在實際編碼中這樣的情況太常見了),結(jié)果導(dǎo)致整個的輸出全錯了!因為(2,3)這個C++逗號操作符表達式的返回值是3,所以15行相當(dāng)于是myadd(3,4)了!

【計算機二級C++逗號操作符應(yīng)用方法詳解】相關(guān)文章:

計算機二級C++考試簡單應(yīng)用題06-02

計算機二級C++上機綜合應(yīng)用題02-25

2017計算機二級C++綜合應(yīng)用題訓(xùn)練04-19

C++ this指針詳解07-04

計算機二級C++考點:C++語言概述07-17

c++快速排序詳解04-24

計算機二級C++模板概述07-06

計算機二級C++函數(shù)考點07-22

計算機二級C++函數(shù)解釋05-20