C++拾遗(五)语句相关
前綴格式與后綴格式
對于表達式:后綴如 i++ 表達式的值仍是 i,在遇到下一個順序點后再將 i 加1。前綴 ++i 表達式的值就是(i+1),先計算表達式的值,不需要等待 順序點。
對于類:前綴函數效率比后綴函數高,后綴函數需要首先復制一個拷貝,加 1 完成后將復制的拷貝返回。而前綴函數是將值加 1 再返回結果,不需要拷貝。
對于指針: * 和 ++前綴 、--前綴的優先級相同,以從右到左的方式結合。這意味著:
- *++pt 表示先對 pt 指針加 1 ,再取加 1?后的 pt 指向的值。
- ++*pt 表示先取 pt 指針指向的值,再對 pt 指向的值加1。
++后綴和--后綴優先級相同且高于前綴。這意味著:
- (*pt)++ 表示先取pt指向的值,再對這個值加 1 。
- *pt++ 中++操作符先作用于pt,但是由于是后綴操作符,所以仍然取pt指向的值,在執行到下一個順序點后,再對pt加 1 。
逗號操作符
逗號表達式的值是第二部分的值,如 i = ( 10, 200 );i 的值是200。但是逗號操作符的優先級最低,所以如 i = 10, 200; i 的值為10。
字符串比較
Char數組的數組名與字符串比較不能使用==操作符,應使用strcmp();若字符串相等,則返回0;若字符串不相等則返回1。
strcmp(str1,str2);
strcmp(str1,str2)<0;則str1在str2前面。
strcmp(str1,str2)>0;則str1在str2后面。
類型別名
C++的兩種方式:
- 預處理器方式:使用#define aliasName typeName
這種方法使得程序在編譯時用typeName替換掉aliasName。但是這僅僅是字符的替換,也就是說對于一系列變量的聲明不適用。
例如:#define FLOAT_POINTER float *
FLOAT_POINTER pa, pb;
只是替換為 float * pa, pb; 這時pa是一個指針,然而pb還是一個float變量。
2. typedef typeName aliasName;
這種方法能處理復雜的類型別名。
?邏輯操作符
||和&&都是順序點,即先計算左側的值再進行右側的判斷。
&&操作符優先級高于||。
?:操作符
C++中唯一一個需要三個操作數的操作符。
ex1 ? ex2 : ex3
若ex1的值為true,則表達式值為ex2的值;
若ex1的值為false,則表達式值為ex3的值。
switch細節相關
標簽必須是單獨的整數(包括char和enum)。
case只是行標簽,跳到該標簽后將依次執行之后的所有語句除非用break跳出。
如果標簽均不匹配,則跳到default處執行;如果此時沒有default,則跳出switch執行之后的語句。
轉載于:https://www.cnblogs.com/DeathKnightH/p/5332163.html
總結
以上是生活随笔為你收集整理的C++拾遗(五)语句相关的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何释放电脑被限制的20%网速?
- 下一篇: [maven] 使用问题及思考汇总