C++基础 (1) 常见的易错问题
我的理解,第9行,先計(jì)算括號內(nèi)的,將5賦值給z,y,然后x=x*5.
第11行,是一個判斷語句==符號并不會改變操作數(shù)的值.當(dāng)為真,這個運(yùn)算符返回1,否則0或FALSE.此處x值不變.
第12行,&是按位與運(yùn)算.只有當(dāng)兩位都是1時才為真,即任意一邊位為0,則該位按位與后結(jié)果為0.如1010&1001他結(jié)果等于1000.
同理,按位或|操作符是當(dāng)兩位有一位為1時,按位或的值就為1.如1010|1001結(jié)果為1011.
按位異或^操作符是僅當(dāng)有且只有一位為1時按位異或結(jié)果才為1.如1010^1001結(jié)果為0011.
~是按位求反,~1001結(jié)果是0110.
<<在非輸出流(cout)或重載情況下表示按位左移,右邊0補(bǔ)齊,>>向右移.如int a=5;
a<<2 //00000101變成了00010100
&&,||,!是邏輯運(yùn)算,或,與非,他們的結(jié)果只有TRUE或FALSE.
#include <iostream> using namespace std; void main() {int a=4,b=6,c=7;if(a==4||b++){cout<<"a="<<a<<" b="<<b<<endl;//a=4 b=6 }if(a==4&&b++){cout<<"a="<<a<<" b="<<b<<endl;//a=4 b=7 }if(a==b&&c++){cout<<"未跳過c="<<c<<endl;}elsecout<<"跳過 c="<<c<<endl; //跳過 c=7 }?
邏輯或運(yùn)算||是當(dāng)兩邊表達(dá)式有一個為真該運(yùn)算結(jié)果就為真,即當(dāng)||左邊表達(dá)式為真時不會計(jì)算右邊表達(dá)式.&&操作符,當(dāng)左邊表達(dá)式為假時就不計(jì)算右邊表達(dá)式,只有當(dāng)左邊為真時才會計(jì)算右邊表達(dá)式.
如下代碼:
1 using namespace std; 2 int TEMP=3; 3 int main(void) 4 { 5 /* 6 *C++全局變量與局部變量 7 */ 8 int TEMP=10; 9 ::TEMP++; 10 cout<<::TEMP<<endl;//結(jié)果為3 11 cout<<TEMP<<endl;//結(jié)果為10 12 return 0; 13 }第2行聲明并定義了全局變量TEMP,第8行聲明了局部變量TEMP.那么在main函數(shù)中,直接使用TEMP指的是局部變量,即TEMP=10,使用全局變量可加全局作用域::
如下代碼:
1 #include<iostream> 2 using namespace std; 3 int main(void) 4 { 5 int i=1,j=2; 6 int k=i+++j; 7 cout<<k<<endl;//結(jié)果是3 8 9 return 0; 10 }如下代碼:
?
1 a = 4; cout << a++ << a;?
這是CSDN C++板塊上置頂?shù)囊粋€,拿到這所的原因是現(xiàn)在的國家計(jì)算機(jī)二級考試常考這種題,我在兩臺電腦上用不同編譯器得到的結(jié)果是不同的,所以記住一個規(guī)則:
任何依賴于特定計(jì)算順序、依賴于在順序點(diǎn)之間實(shí)現(xiàn)修改效果的表達(dá)式,其結(jié)果都沒有保證。程序設(shè)計(jì)中應(yīng)該貫徹的規(guī)則是:如果在任何“完整表達(dá)式”(形成一段由順序點(diǎn)結(jié)束的計(jì)算)里存在對同一“變量”的多個引用,那么表達(dá)式里就不應(yīng)該出現(xiàn)對這一“變量”的副作用。否則就不能保證得到預(yù)期結(jié)果
如下代碼:
?
其實(shí)這個在匯編中很好解釋,x=x+1相比x++要多使用幾次寄存器,效率自然要低點(diǎn),不過這種寫法也不是特實(shí)用,畢竟現(xiàn)代的計(jì)算機(jī)已經(jīng)非常快樂,一些特殊項(xiàng)目不算.
轉(zhuǎn)載于:https://www.cnblogs.com/yTPety/archive/2013/03/03/CPP_basic.html
總結(jié)
以上是生活随笔為你收集整理的C++基础 (1) 常见的易错问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LA 4328 Priest John'
- 下一篇: VS 2010的一些常用问题