Just My Life & My Work

Archive for the ‘C&C++’ Category

[C++] 暫存器變數 (Register Variable)

剛和朋友討論C語言變數儲存等級(storage class),一共有四種:auto、extern、register、static,我們最常用的是auto,然而卻很少人用它來宣告變數,怎麼說起來很奇怪?因為編譯器自動把我們宣告的變數自動設成auto,只是我們都忽略有這回事。看個例子:

(繼續閱讀…)

[C++] 均勻亂數轉常態亂數 (Uniform to Normal)

C語言所產生的隨機亂數為均勻(Uniform)亂數,假如我們想要產生常態(Normal)亂數怎麼辦呢?我們先來看WiKi的Normal Distribution

The red line is the standard normal distribution

(繼續閱讀…)

[C++] 變數相乘vs常數相乘的速度 (Variable vs Constant)

剛做了一個實驗,並且估計執行時間,很令人驚喜的發現,哈~其實理論早就知道了,所以比較【變數相乘】和【常數相乘】的執行速度,當然是……

(繼續閱讀…)

[C++] 計算程式執行時間 (Compute Time of Execution)

大二演算法和碩一高等演算法都需要計算程式執行時間 (Compute Time of Execution),藉此來分析演算法的效能,雖然現在中央處理器快到讓我們人感覺不太出來,不過在處理上億次的迴圈依然有需要,讓我們知道,一個小小的運算累積起來影響多大,正所謂:差之毫釐,失之千里

(繼續閱讀…)

[C++] 讀取檔案大小 (Read Size of File)

寫程式來讀取檔案很少用到,
但卻是個相當有用的技巧,
以下四個步驟的程式碼:

(繼續閱讀…)

[C++] 在程式碼中插入行號

為了慶祝偉大的【愚人節】,
我寫了這一篇「懶人插入行號」的程式,
喔~其實我是因為睡不著才來寫低,
為什麼會睡不著呢?
都是因為重感冒的關係,
讓我持續無預警得咳嗽,
這種狀況我怎麼睡得好呢?
想到以後會時常用到「插入行號」的功能,
自己隨性就來寫一支Code:P

(繼續閱讀…)

[C++] 精準度 (Precision)

今天56級吳同學長來演講Foundations of Interval Computation
因為他是數學系出身,
所以內容大部分包含數學,
許多數學式子我可以不懂:P
但有一個演算法卻讓相當感興趣!

(繼續閱讀…)

[C++] 指標的藝術 (Art of Pointer)

之前以為指標有限制【深度】,
在看過了「指標的藝術」這本書後,
馬上來測試指標深度的極限,
我驗證到10層都還可以編譯,
相信若compiler沒有限制的話,
是可以到【無限】深度的!
不過倒是沒看過有人會寫超過2顆*的程式,
人類的理解程度最多可到3維也就是3顆*,
【空間概念】厲害的人就可以玩弄星星於鼓掌之中XD~
有興趣的人可以玩一玩喔~

/**
	Theme: Art of Pointer
	Date: 100/01/25
	compiler: Dev C++ 4.9.9.2
	Author: ShengWen
	Blog: https://cg2010studio.wordpress.com/
*/
#include<iostream>
using namespace std;

int main(){
	int number=99;
	int *onePointer;
	int **twoPointer;
	int ***threePointer;
	int ****fourPointer;
	int *****fivePointer;
	int ******sixPointer;
	int *******sevenPointer;
	int ********eightPointer;
	int *********ninePointer;
	int **********tenPointer;

	onePointer=&number;
	twoPointer=&onePointer;
	threePointer=&twoPointer;
	fourPointer=&threePointer;
	fivePointer=&fourPointer;
	sixPointer=&fivePointer;
	sevenPointer=&sixPointer;
	eightPointer=&sevenPointer;
	ninePointer=&eightPointer;
	tenPointer=&ninePointer;

	cout<<&tenPointer<<endl;
	cout<<tenPointer<<endl;
	cout<<*tenPointer<<endl;
	cout<<**tenPointer<<endl;
	cout<<***tenPointer<<endl;
	cout<<****tenPointer<<endl;
	cout<<*****tenPointer<<endl;
	cout<<******tenPointer<<endl;
	cout<<*******tenPointer<<endl;
	cout<<********tenPointer<<endl;
	cout<<*********tenPointer<<endl;
	cout<<**********tenPointer<<endl;
	system("pause");
	return EXIT_SUCCESS;
}

輸出結果:

0x23ff4c
0x23ff50
0x23ff54
0x23ff58
0x23ff5c
0x23ff60
0x23ff64
0x23ff68
0x23ff6c
0x23ff70
0x23ff74
99
請按任意鍵繼續 . . .

[C++] 產生隨機數字且不重複 (Generate Random Number)

有時候寫程式會用到亂數,
而且產生得亂數不會重複。
我用的方法是【撲克牌】法,
也就是1-52本來就已經決定,
接著兩兩對調,
對調的次數越多,
亂數的序列越均勻,
最後再從52張牌抽一張,
那個就是【撲克牌】法所產生的亂數。

(繼續閱讀…)

標籤雲