C++冷知識~~~
#include<iostream>
using namespace std;
int main()
{
int a,b;
a=1,2,3,4,5;//輸出第一個值, a=1;
b=(1,2,3,4,5);//輸出最後一個值, a=5;
cout<<a<<endl;
cout<<b<<endl;
int c[10]={1,2,3,4,5,6,7,8,9,0},b=10;
while(b --> 0)cout <<c[b]<<" ";//輸出0 9 8 7 6 5 4 3 2 1 ;
cout<<endl;
int d=10;
while(d --> 0)cout <<d<<" ";//輸出9 8 7 6 5 4 3 2 1 0;
return 0;
}
搥使題目驚坐起,笑問這題怎麼寫 可憐夜半虛前席,不問蒼天問教授 估狗仍舊不知曉,鍵盤滑鼠仍默矣 不為浮雲遮望眼,只緣身在最高層 大難臨頭往下推,小事一樁自己來 周遭都說很容易,四面楚歌要搞啥 甭要再問為什麼,因為說了你會怕
2018年3月18日 星期日
2018年3月17日 星期六
C++曾經新手犯過的可執行錯誤
是否在剛學習宣告變數時,想要使用了那些懶人包( a=a+1 改成 a+=1 或 ++a );😙😙
但應用上輸出結果卻時常不如預期,不知道錯在哪裡;😕😖
誤打誤撞的對了,也就這樣了,對於同樣錯誤的隔壁;😓😒😑😐
兩兩互看、四目對望的也不知道錯在哪;😵😵
即便改對了,完全像作夢似的完全不記得夢境內容,說不出個所以然;😭😣😱
既是交不了作業覺得煩躁又覺得程式困難重重,大大的打擊信心(桑勳~~);😬💔💢💣
以下示範了這些懶人包(這些可執行的寫法),靜靜的思考一下,搞清楚;😤😤😤
弄懂了,搞不好在其他地方 ,也能運用呢,也可以自行執行看看喔~~!;😀😀😀
#include<iostream>
using namespace std;
int main()
{
int a = 1 , b = 0 ;
b=a++;//先執行 b=a 後 a++(即a=a+1),a=2 b=1
cout << a <<endl;// a=2
cout << b <<endl;// b=1
cout << a++ <<endl;//a會先傳回原來的2,但實際上a=a+1, a=3
a++;//a=a+1, a=4
cout << a++ <<endl;//a會先傳回原來的4,但實際上a=a+1, a=5
cout << +a <<endl;//無運算, 保持不變 a=5
cout << ++a <<endl;//a=a+1, a=6
b=++a;//b= (a=a+1), a=7 b=7
cout << a <<endl;//保持不變, a=7
cout << b <<endl;//保持不變, b=7
cout << ++b <<endl;//b=b+1, b=8
cout << b++ <<endl;//b會先傳回原來的7,但實際上b=b+1, b=8
++a;//a=a+1, a=8
cout << a <<endl;//保持不變, a=8
//👉💭 a++ 在運算子裡面的優先等級高於 ++a 喔~~~ 💭👈
cout << a++ + ++a << endl;
//a會先更新為 a++ 傳回的 8 (實際上a=a+1, a=9)加上
//實際的 a=9 (a=a+1, a=10), 故b=8+10, a=18
cout << a << endl;// a=10
cout << ++b + b++ << endl;
//雖然會先傳回 b=9(但之後繼續參與運算的是實際上的b=b+1, b=10)
//加上剛被前算式 b++ 更新的 b=10, b=10+10=20,然後再進行 ++b, b=b+1, b=21
cout << b << endl;// b=11
return 0;
}
但應用上輸出結果卻時常不如預期,不知道錯在哪裡;😕😖
誤打誤撞的對了,也就這樣了,對於同樣錯誤的隔壁;😓😒😑😐
兩兩互看、四目對望的也不知道錯在哪;😵😵
即便改對了,完全像作夢似的完全不記得夢境內容,說不出個所以然;😭😣😱
既是交不了作業覺得煩躁又覺得程式困難重重,大大的打擊信心(桑勳~~);😬💔💢💣
以下示範了這些懶人包(這些可執行的寫法),靜靜的思考一下,搞清楚;😤😤😤
弄懂了,搞不好在其他地方 ,也能運用呢,也可以自行執行看看喔~~!;😀😀😀
#include<iostream>
using namespace std;
int main()
{
int a = 1 , b = 0 ;
b=a++;//先執行 b=a 後 a++(即a=a+1),a=2 b=1
cout << a <<endl;// a=2
cout << b <<endl;// b=1
cout << a++ <<endl;//a會先傳回原來的2,但實際上a=a+1, a=3
a++;//a=a+1, a=4
cout << a++ <<endl;//a會先傳回原來的4,但實際上a=a+1, a=5
cout << +a <<endl;//無運算, 保持不變 a=5
cout << ++a <<endl;//a=a+1, a=6
b=++a;//b= (a=a+1), a=7 b=7
cout << a <<endl;//保持不變, a=7
cout << b <<endl;//保持不變, b=7
cout << ++b <<endl;//b=b+1, b=8
cout << b++ <<endl;//b會先傳回原來的7,但實際上b=b+1, b=8
++a;//a=a+1, a=8
cout << a <<endl;//保持不變, a=8
//👉💭 a++ 在運算子裡面的優先等級高於 ++a 喔~~~ 💭👈
cout << a++ + ++a << endl;
//a會先更新為 a++ 傳回的 8 (實際上a=a+1, a=9)加上
//實際的 a=9 (a=a+1, a=10), 故b=8+10, a=18
cout << a << endl;// a=10
cout << ++b + b++ << endl;
//雖然會先傳回 b=9(但之後繼續參與運算的是實際上的b=b+1, b=10)
//加上剛被前算式 b++ 更新的 b=10, b=10+10=20,然後再進行 ++b, b=b+1, b=21
cout << b << endl;// b=11
return 0;
}
訂閱:
文章 (Atom)