日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++基础 (1) 常见的易错问题

發布時間:2024/4/14 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++基础 (1) 常见的易错问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 #include<iostream> 2 using namespace std; 3 int main(void) 4 { 5 /* 6 *True為1,False為0 7 */ 8 int x=2,y,z; 9 x*=(y=z=5);cout<<x<<endl;//結果10 10 z=3; 11 x==(y=z);cout<<x<<endl;//結果10 12 x=(y&z);cout<<x<<endl;//按位與。結果3 13 x=(y&&z);cout<<x<<endl;//與運算。結果1 14 y=4; 15 x=(y|z);cout<<x<<endl;//按位或。結果7 16 x=(y||z);cout<<x<<endl;//或運算。結果1 17 return 0; 18 }

我的理解,第9行,先計算括號內的,將5賦值給z,y,然后x=x*5.

第11行,是一個判斷語句==符號并不會改變操作數的值.當為真,這個運算符返回1,否則0或FALSE.此處x值不變.

第12行,&是按位與運算.只有當兩位都是1時才為真,即任意一邊位為0,則該位按位與后結果為0.如1010&1001他結果等于1000.

同理,按位或|操作符是當兩位有一位為1時,按位或的值就為1.如1010|1001結果為1011.

按位異或^操作符是僅當有且只有一位為1時按位異或結果才為1.如1010^1001結果為0011.

~是按位求反,~1001結果是0110.

<<在非輸出流(cout)或重載情況下表示按位左移,右邊0補齊,>>向右移.如int a=5;

a<<2 //00000101變成了00010100

&&,||,!是邏輯運算,或,與非,他們的結果只有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 }

?

邏輯或運算||是當兩邊表達式有一個為真該運算結果就為真,即當||左邊表達式為真時不會計算右邊表達式.&&操作符,當左邊表達式為假時就不計算右邊表達式,只有當左邊為真時才會計算右邊表達式.

如下代碼:

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;//結果為3 11 cout<<TEMP<<endl;//結果為10 12 return 0; 13 }

第2行聲明并定義了全局變量TEMP,第8行聲明了局部變量TEMP.那么在main函數中,直接使用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;//結果是3 8 9 return 0; 10 }

如下代碼:

?

1 a = 4; cout << a++ << a;

?

這是CSDN C++板塊上置頂的一個,拿到這所的原因是現在的國家計算機二級考試常考這種題,我在兩臺電腦上用不同編譯器得到的結果是不同的,所以記住一個規則:

  任何依賴于特定計算順序、依賴于在順序點之間實現修改效果的表達式,其結果都沒有保證。程序設計中應該貫徹的規則是:如果在任何“完整表達式”(形成一段由順序點結束的計算)里存在對同一“變量”的多個引用,那么表達式里就不應該出現對這一“變量”的副作用。否則就不能保證得到預期結果


如下代碼:

1 #include<iostream> 2 using namespace std; 3 int main(void) 4 { 5 /* 6 x=x+1,x+=1,x++;哪個效率最高,為什么? 7 x=x+1;效率最低,執行過程如下 8 1.讀取右邊x地址 9 2.x+1 10 3.讀取左邊x地址 11 4.將右值傳給左邊 12 x+=1;其次,執行過程如下 13 1.讀取右邊x地址 14 2.x+1 15 3.將值傳給x 16 x++效率最高,執行過程如下 17 1.讀取右邊的x地址 18 2.x自增1 19 */ 20 return 0; 21 }

?

其實這個在匯編中很好解釋,x=x+1相比x++要多使用幾次寄存器,效率自然要低點,不過這種寫法也不是特實用,畢竟現代的計算機已經非常快樂,一些特殊項目不算.

轉載于:https://www.cnblogs.com/yTPety/archive/2013/03/03/CPP_basic.html

總結

以上是生活随笔為你收集整理的C++基础 (1) 常见的易错问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。