青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

數據類型的自動轉換

表達式求值的過程中,往往會伴隨著數據類型的自動轉換,而數據類型的轉換的一般情況如下所示,從低到高。

long double

double

float

unsigned long int

long int

unsigned int

int

有幾點需要注意:

1. 這里沒有出現char,short,enum,因為它們會被自動轉換為int或是unsigned int類型

2. 當unsigned int 和 int 出現在同一個式子中時,需要注意,如:5u – 10,結果是大于0的,不是-5,而是4294967291

3. 另外對于32位機,由于long int的表現形式與int相同,unsigned int的表現形式與unsigned long int相同,因此long int的數值范圍無法包含unsigned int,因此在32位機進行處理時,它們間的類型的自動轉換可以理解為4位的有符號自動轉為4位的無符號,然后再向上轉為float型等;如 unsigned int a = 45; long int b = 2147483643; a + b中可以理解為都轉換成了unsigned long類型

posted @ 2012-05-25 20:55 鐘謝偉 閱讀(218) | 評論 (0)編輯 收藏

傻瓜式安裝codelite出現的一些問題

摘要:就windows下傻瓜式安裝codelite時出現的一些問題進行了闡述,并提供了一定的解決方案,希望對于遇到相同情況的讀者有所幫助。

在這里不說為什么選擇codelite這么個IDE,其實這樣的爭執在幾分鐘后往往會偏離正題,思緒被情緒控制,各執己見,何謂?

什么是傻瓜式安裝呢,就是在windows下,利用release的安裝版本,這里下的是包含wxWidget,MinGW的安裝版本,然后根據它的指示一直下一步下一步進行就行了。如果你的機子最初是干干凈凈的,最后安裝的程序會是成功的。但是這基本上是不可能的,而我呢,恰好由于事先在機子上裝了些東西,就使得安裝完成后并不能像codelite官網中quick start所說的那樣進行操作。

想原因可能如下:

*. 原來安裝過code::block,將code::block自帶的mingw32-make.exe所在的目錄加在了環境變量中,并且原來安裝過庫wxWidget的低版本,由于選擇了codelite,于是將wxWidget原來的版本和code::block都刪除了。并在環境變量中也將值刪除了。

然后卸載掉codelite進行重裝,不過依然不能運行wxWidget框架程序。build時出現需要將“WXWIN = C:\wxWidget”的提示,查看了一下setting:tags setting : ctags : include files內包含的竟然是perl中的mingw,額裝的東西太多了,于是將perl相關的環境變量也刪除了。

繼續重裝,結果發現依然沒有任何改變,悲劇,到底是怎么回事呢,細想來,原來C盤的Application Data中有codelite的配置文件,由于卸載的過程中并沒有將這些配置文件刪除,重裝后依然使用的是這些配置文件,才導致了問題的出現,于是將Application Data下的codelite文件夾刪除,再進行重裝,終于是成功了。

傻瓜式安裝,只是設想到了理想的情況下如何進行處理,沒有料想到會出現想我這樣的情況,所以安裝結束后相關配置文件中的數據的設定出現了錯誤,導致無法正常build。

至此,安裝結束了,學習才剛剛開始。

 

 

也許你會說,為什么不從codelite軟件中對配置數據進行設定呢,其實進行了嘗試,正確的設定了ctags : include files的位置,但是結果依然無法build,出現類似“WXWIN = C:\wxWidget”的提示,于是將其設置到環境變量中也沒有得到相應的解決,所以茫然之下才出此下策,一切從頭開始。

相信隨著深入的學習,對于它的處理方式,配置文件的設定等,都會慢慢了解的,一鳴驚人的背后蘊含著多少的厚積呢,急不來的。


補充一下:

環境變量的設置不是設置計算機的環境變量,而是設置codelite下setting下的環境變量,額,因為慣性思維沒有考慮到這點,悲劇哦。

posted @ 2012-05-25 20:16 鐘謝偉 閱讀(3775) | 評論 (1)編輯 收藏

(IDE or VIM) and (習慣)

VIM的學習不是一天兩天的事情,先用著IDE吧,并逐步學習VIM的使用。
最近由于工作的需要,要用到界面的開發,選什么庫呢,MFC,Qt or wxWidget。對微軟的東西有種莫名的反感,也許那么多年了不得不用它的產品,特別是操作系統,有時特別是在安裝程序的時候,點著是否接受協議,不接受自然是無法安裝了,都習慣性點擊同意了,會剎那的感覺自己是不是被當作了一個“低能兒”的,也許是這么一種心理的作怪,總是在矛盾中用著微軟的產品,想跳出使用linux,但是學習上,別人都是用office進行操作,導師對于工作的檢查也都用MS office,換用linux的話會使工作進度,交流等產生一定的障礙吧。很多東西就仿佛和它綁在了一起。慢慢來,一步一步將它對自己的影響逐漸降低吧,又從開源的角度考慮,選擇了wxWidget于是又選擇了codelite作為學習該庫的IDE了。自然VIM依然在不斷的進行中。
相信微軟是無法束縛我的思維的。成為工具的主人。
總結:
隨著對VIM的慢慢接觸,逐漸發現了它作為編輯器的強大,相信自己會持之以恒的。
習慣有時能夠在解決問題上節省很多的時間,但會使得一個人的敏感性降低,沒有什么東西是一塵不變的,正因為人們都在重復著一種類似的生活方式,上班,工作,回家,睡覺,繼而上班,這樣不斷的往復著,或是學習上課等,也是以一種類似的方式往復著,這樣便更加容易陷入到習慣的河流中,慢慢迷失了原有的激情,原有的對于事、對于人的敏感性。在這里并不是想要一味著貶低習慣,只是想喚醒人們心中那種不知道出現了多久的迷茫,喚醒覆滅已久的熱情,讓他們能夠在生活的腳步中,保持一顆清醒的頭腦,成為習慣的主人,而不是成為習慣的奴隸,并謹記流動著的才是真理,死寂不變的是一灘死水,今天的清澈,并不能改變未來的骯臟與渾濁。
寫給自己,也寫給大眾。

posted @ 2012-05-24 22:03 鐘謝偉 閱讀(1784) | 評論 (8)編輯 收藏

函數參數傳遞,一二事

摘要:簡要比較了直接、指針、引用三中函數參數傳遞方式,并對其優缺點進行了大致的說明

1. 眾所周知,函數參數的直接傳遞就是實現一個拷貝值,這個拷貝值的變化,并不會改變原值的變化,因為兩個被來就是不同的個體,就好比兩個克隆的個體,雖然兩者之間有很多相同的地方,但是它們的思維是獨立的。

2. 通過指針的方式給函數參數傳值呢,從根本上來講,它仍然是直接傳值,但是這個拷貝的值比較特殊,是一個地址罷了,如:

   1: void fun(int *pnValue)
   2: {
   3:     ...;
   4: }
   5: int main()
   6: {
   7:     int nValue = 6;
   8:     fun(&nValue);
   9: }

它其實是將nValue的地址拷貝給了pnValue,如果在fun函數中,一開始就將pnValue的值給改變,如pnValue=&nValue2,那么pnValue指向的內容的改變,將不會影響到nValue。

同時有一點需要注意的是,空指針對象是沒有意義的,會引起程序的奔潰,因此在開始因該進行檢測,if(!pnValue) return;

通過指針傳參數的優點:

1) 允許你改變傳遞的參數的值

2) 由于它拷貝的僅僅是一個字節大小的地址,因此傳遞的過程是快速的,特別對于較大的結構或是類

3) 我們通過這種傳參方式,獲取從函數中返回的多個量

缺點:

1) 傳遞的只能是普通的變量,不能是字面常量或表達式

2) 所有的傳遞值都得檢查是不是空指針

3. 通過引用的方式傳遞參數

雖然在底層的操作中,通過引用也是通過“指針的方式”進行實現的http://blog.csdn.net/wanwenweifly4/article/details/6739687),但是從語言上考慮,引用是對象的別名,也是一個對象,并不是指針,因為它的概念是在語言上定義的,而不是底層的實現方式,換一種思維,拋開所有的比匯編語言高級的語言,回到匯編語言建立初期,單單從匯編語言上考慮,那時有沒有指針的概念呢?因此應該理性的對待引用在C++語言中的概念,也應該冷靜的認識它在底層中的實現方式,區分的對待,其實也不用爭執于這個問題,認清了,會用了,就成了。(這些僅個人見解,批判的看待吧)。

它在傳參中的優點:

1) 允許你改變傳遞的參數的值

2) 傳遞的過程是快速的,特別對于較大的結構或是類

3) 可以通過添加一個const,避免不經意的改變

4) 我們通過這種傳參方式,獲取從函數中返回的多個量

缺點:

1) 非const類型的參數,傳遞的只能是普通的變量,不能是字面常量或表達式

2) 不容易區分哪些變量是input,需要output,或都是

3) 通過函數的調用,很難看出那個參數是將被改變的,因為它和直接傳值的方式相同,只能通過函數原型進行辨認,當程序員不小心忽視的時候,可能會導致錯誤的發生

 

ps:

   1: #include <iostream>
   2:  
   3: int nFive = 5;
   4: int nSix = 6;
   8: void SetToSix(int *pTempPtr);
   9:  
  10: int main()
  11: {
  12:     using namespace std;
  13:  
  16:     int *pPtr = &nFive;
  19:     cout << *pPtr;
  20:  
  23:     SetToSix(pPtr);
  27:     cout << *pPtr;
  28:  
  29:     return 0;
  30: }
  31:  
  33: void SetToSix(int *pTempPtr)
  34: {
  35:     using namespace std;
  36:  
  38:     pTempPtr = &nSix;
  41:     cout << *pTempPtr;
  42: }

上面這個程序中輸出的結果是 565

如果想使得輸出的結果為566呢,有一個方法可以實現,就是采用指針的引用,如下:

   1: // pTempPtr is now a reference to a pointer to pPtr!
   2: // This means if we change pTempPtr, we change pPtr!
   3: void SetToSix(int *&pTempPtr)
   4: {
   5:     using namespace std;
   6:  
   7:     pTempPtr = &nSix;
   8:  
   9:     // This will print 6
  10:     cout << *pTempPtr;
  11: }

posted @ 2012-05-23 22:16 鐘謝偉 閱讀(1393) | 評論 (0)編輯 收藏

const和pointers

1. const指針總是指向相同的地址,該地址是不能被改變的.

   1: int nValue = 5;
   2: int *const pnPtr = &nValue;

*pnPtr = 6; 這樣的操作是可行的;而 int nValue2 = 2; pnPtr = &nValue2;這樣的操作是不可行的。

int *const pnPtr 可以這么理解,pnPtr當作地址,該指針有const地址,并且指向一個整型變量。

2. 指向const變量(雖然這個變量本身可以不是const的)的指針

   1: int nValue = 5;
   2: const int *pnPtr = &nValue;

const int *pnPtr可以這么理解,一個可以改變地址的指針指向的是一個不能改變大小的變量。

也就是說,*pnPtr = 6;這樣是不行的;int nValue2 = 6; pnPtr = &nValue2;這樣是可行的

3. 當然,還有一種就是兩者都不能改變了。

int nValue = 2;

const int *const pnPtr = &nValue;

不過此時可以通過nValue=6;來改變*pnPtr的值。把int nValue = 2;改成 const int nValue = 2;那么就什么都不能變咯。

posted @ 2012-05-22 20:28 鐘謝偉 閱讀(1214) | 評論 (0)編輯 收藏

動態內存分配導致內存泄漏之處

摘要:舉了幾個動態內存分配過程中,發生內存泄漏的例子

1. 分配了內存,卻沒有及時刪除,導致泄漏

   1: void doSomething()
   2: {
   3:     int *pnValue = new int;
   4: }

2. 為指針變量分配了一個內存,然后又讓指針變量指向其他的值,導致泄漏

   1: int nValue = 5;
   2: int *pnValue = new int;
   3: pnValue = &nValue; // old address lost, memory leak results

3. 連續分配了兩次內存,第一次分配的內存由于沒有delete,導致泄漏

   1: int *pnValue = new int;
   2: pnValue = new int; // old address lost, memory leak results

posted @ 2012-05-22 20:07 鐘謝偉 閱讀(1479) | 評論 (0)編輯 收藏

字符串讀取,一點事

先來看一下一段代碼:

   1: char szString[255];
   2: cin >> szString;
   3: cout << “You entered: ”<< szString << endl;

這段代碼在c++程序中是很常見的,但仔細想一下如果你輸入的字符串長度大于255,就會出現溢出的現象,也許這個問題通常會被人忽略。

其實我們可以選擇一個更好的實現方法,如下

   1: char szString[255];
   2: cin.getline(szString, 255);
   3: cout << "Your entered: " << szString << endl;

通過這樣的方式,像第一個例子中可能出現的內存溢出的現象就可以避免了。

posted @ 2012-05-22 19:22 鐘謝偉 閱讀(195) | 評論 (0)編輯 收藏

5.9 隨機數生成

from http://www.learncpp.com/cpp-tutorial/59-random-number-generation/

通常在游戲,統計模型程序和科學模擬中會用到隨機事件。

而由于計算機的本質結構決定計算機只能生成偽隨機數據。

偽隨機生成器,設定一個初始值(seed),對它進行操作形成不同的數值,讓它看上去與初始值沒有聯系。如果算法足夠復雜,將同樣的算法用到最后生成的數字,這樣就能夠產生一些列看上去隨機的數值。

下面是一個產生100個偽隨機數的程序:

1.

   1: #include <stdafx.h>
   2: #include <iostream>
   3: using namespace std;
   4:  
   5: unsigned int PRNG()
   6: {
   7:     // our initial starting seed is 5323
   8:     static unsigned int nSeed = 5323;
   9:  
  10:     // Take the current seed and generate a new value from it
  11:     // Due to our use of large constants and overflow, it would be
  12:     // very hard for someone to predict what the next number is
  13:     // going to be from the previous one.
  14:     nSeed = (8253729 * nSeed + 2396403);
  15:  
  16:     // Take the seed and return a value between 0 and 32767
  17:     return nSeed  % 32767;
  18: }
  19:  
  20: int main()
  21: {
  22:     // Print 100 random numbers
  23:     for (int nCount=0; nCount < 100; ++nCount)
  24:     {
  25:         cout << PRNG() << "\t";
  26:  
  27:         // If we've printed 5 numbers, start a new column
  28:         if ((nCount+1) % 5 == 0)
  29:             cout << endl;
  30:     }
  31: }

事實上我們這個例子并不是很好,但是它足夠用來說明偽隨機數是如何產生的。

 

C++產生偽隨機數

語言中有內置的隨機數生成器,它需要兩個獨立的函數組合使用。

srand() 用來設置初始seed。srand()通常只調用一次。

rand()生成序列中的下一個隨機值。

2.

   1: #include <iostream>
   2: #include <cstdlib> // for rand() and srand()
   3: using namespace std;
   4:  
   5: int main()
   6: {
   7:     srand(5323); // set initial seed value to 5323
   8:  
   9:     // Print 100 random numbers
  10:     for (int nCount=0; nCount < 100; ++nCount)
  11:     {
  12:         cout << rand() <<“\t”;
  13:         
  14:         // If we've printed 5 numbers, start a new column
  15:         if ((nCount+1) % 5 == 0)
  16:         cout << endl;
  17:     }
  18: }

rand()產生的偽隨機數的范圍在0到RAND_MAX之間,通常它的值在cstdlib中為32767.

通常我們并不想要這個范圍內的隨機值。我們想要兩個nLow和nHigh范圍內。如1-6.

3.

   1: // Generate a random number between nLow and nHigh (inclusive)
   2: unsigned int GetRandomNumber(int nLow, int nHigh)
   3: {
   4:     return (rand() % (nHigh - nLow + 1)) + nLow;
   5: }

當我們反復運行第2個程序的時候,發現每次的結果都是相同的。由于我們每次設置的seed都是相同的。因此我們使用了time()函數來產生seed。

   1: #include <stdafx.h>
   2: #include <iostream>
   3: #include <cstdlib> // for rand() and srand()
   4: #include <ctime> // for time()
   5: using namespace std;
   6:  
   7: int main()
   8: {
   9:  
  10:     srand(time(0)); // set initial seed value to system clock
  11:     for (int nCount=0; nCount < 100; ++nCount)
  12:     {
  13:         cout << rand() << "\t";
  14:  
  15:         if ((nCount+1) % 5 == 0)
  16:             cout << endl;
  17:     }
  18: }

 

怎樣的偽隨機生成器算是好的呢?

1)生成器會以相同的概率產生每一個數值。

2)隨機序列的下一個數字不能明顯、容易被預測

3)隨機數生成器產生的數值有一個好的分布,忽而小,忽而大,讓人感覺是隨機的。

4)所有的偽隨機生成器都是周期性的

 

rand()函數只是一個普通的偽隨機生成器

大多數rand()都是使用Linear Congruential Generator方法實現的。

由于RAND_MAX通常是32767,意味著如果我們想要更大的范圍就會不適合了。同時,rand()也不適合產生浮點型隨機值如0.0-1.0. 同時rand()相對于其他算法擁有一個短的周期。

可以使用Mersenne Twister,它具有更好的結果,同時使用相對簡單。

posted @ 2012-05-21 20:50 鐘謝偉 閱讀(1266) | 評論 (0)編輯 收藏

4.4 類型轉換

from http://www.learncpp.com/cpp-tutorial/44-type-conversion-and-casting/

類型隱式轉換

類型隱式轉換的步驟如下所示:

Long double (highest)
Double
Float
Unsigned long int
Long int
Unsigned int
Int (lowest)

最底層是int而不是short或是char,是因為char和short在求值時會被擴展為int。

隱式轉換會出現一些有趣的問題,如5u - 10。也許你會認為結果是-5.但是10為int型,發生隱式轉換成unsigned int型,因此最后結果為unsigned int型,2^32 - 5。又如float fValue = 10/4;

posted @ 2012-05-17 21:31 鐘謝偉 閱讀(143) | 評論 (0)編輯 收藏

3.8 位操作符

from http://www.learncpp.com/cpp-tutorial/38-bitwise-operators/

前面的文章在 http://www.cnblogs.com/grass-and-moon/

位操作符的由來主要是為了更充分的利用內存,如果使用bool型變量,它是一個字節大小,其中一個字節的內存中只有一個位被利用,其余的位都被浪費了。但是現在內存是充裕的,程序員發現往往將代碼表達的更加讓人理解,更加容易維護是一種更好的選擇。

因此,位操作符的使用不再像最初那么平常了,除了一些特殊的環境中,如需要巨型數據處理的科學計算,或需要超速執行的游戲中,仍然會被使用。不管怎么樣,對它有個充分的認識和理解還是必須的。

Operator Symbol Form Operation
left shift << x << y all bits in x shifted left y bits
right shift >> x >> y all bits in x shifted right y bits
bitwise NOT ~ ~x all bits in x flipped
bitwise AND & x & y each bit in x AND each bit in y
bitwise OR | x | y each bit in x OR each bit in y
bitwise XOR ^ x ^ y each bit in x XOR each bit in y

注意 當我們使用位操作符時,使用的變量類型通常是無符號整型。

 

為操作符的原理通常很簡單,但是要將它用活,通常是有一定難度的。

posted @ 2012-05-17 15:06 鐘謝偉 閱讀(249) | 評論 (0)編輯 收藏

僅列出標題
共4頁: 1 2 3 4 
<2012年7月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

導航

統計

常用鏈接

留言簿(1)

隨筆檔案

IT網站

My Friends

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美激情1区2区3区| 91久久极品少妇xxxxⅹ软件| 99re6这里只有精品| 麻豆91精品| 久久影院午夜论| 国户精品久久久久久久久久久不卡| 欧美在线91| 久久riav二区三区| 亚洲电影在线| 亚洲美女视频在线免费观看| 欧美视频在线一区| 久久国产精品亚洲va麻豆| 久久青青草原一区二区| 99ri日韩精品视频| 亚洲视频在线观看| 狠狠色狠狠色综合人人| 亚洲激情在线激情| 欧美久久九九| 欧美在线综合视频| 欧美成人免费小视频| 欧美一级久久| 99ri日韩精品视频| 久久久福利视频| 亚洲视频在线免费观看| 久久精品国产77777蜜臀| 亚洲美女精品成人在线视频| 亚洲女爱视频在线| 亚洲理论在线| 久久精品国产99| 亚洲综合精品| 欧美韩国在线| 免费视频一区二区三区在线观看| 欧美日韩综合在线| 免费一级欧美在线大片| 国产精品电影在线观看| 欧美韩日视频| 红桃视频一区| 亚洲制服丝袜在线| 亚洲图片自拍偷拍| 免费在线观看精品| 久久久久久久久久久久久女国产乱 | 欧美午夜精品电影| 老司机精品福利视频| 国产精品99一区| 亚洲国产视频直播| 一区二区在线视频播放| 午夜视黄欧洲亚洲| 亚洲欧美美女| 欧美视频一区二区三区在线观看| 欧美激情视频在线免费观看 欧美视频免费一 | 亚洲综合色丁香婷婷六月图片| 欧美1级日本1级| 久热精品视频在线观看一区| 国产精品一区视频| 亚洲无毛电影| 亚洲欧美三级在线| 欧美午夜无遮挡| 日韩西西人体444www| 日韩视频在线一区二区| 欧美超级免费视 在线| 欧美成年人在线观看| 精品不卡一区| 久久亚洲欧美| 欧美韩国一区| 99国产精品自拍| 欧美日韩国产黄| 亚洲精品国产精品国自产在线| 亚洲大片免费看| 欧美a级理论片| 亚洲日韩中文字幕在线播放| 亚洲美女精品成人在线视频| 欧美区一区二区三区| 亚洲理论电影网| 亚洲视频精品在线| 国产精品久久久久久久久免费樱桃 | 欧美在线999| 欧美freesex交免费视频| 亚洲激情视频在线播放| 欧美激情1区2区3区| 99精品视频免费观看| 午夜精品久久久久影视| 国产一区二区久久| 麻豆精品一区二区av白丝在线| 亚洲激情在线播放| 午夜精品理论片| 在线不卡中文字幕| 欧美精品一区二区精品网| 一区二区三区欧美日韩| 久久国产精品一区二区三区四区| 韩国精品久久久999| 欧美成人午夜视频| 亚洲午夜精品久久| 玖玖综合伊人| 中文在线资源观看网站视频免费不卡 | 性欧美xxxx大乳国产app| 久热综合在线亚洲精品| 9人人澡人人爽人人精品| 国产伦精品一区二区三区免费迷| 久久精品久久99精品久久| 亚洲激情另类| 久久精品在这里| 99精品视频网| 国内久久视频| 欧美日韩在线亚洲一区蜜芽 | 亚洲国产成人久久| 羞羞色国产精品| 亚洲精品资源| 好看不卡的中文字幕| 欧美日韩一区精品| 久久亚洲美女| 午夜视频在线观看一区二区| 91久久线看在观草草青青| 久久精品成人欧美大片古装| 99v久久综合狠狠综合久久| 尹人成人综合网| 国产精品中文在线| 欧美日韩www| 免费成人av资源网| 欧美在现视频| 香蕉久久夜色精品国产| 亚洲毛片av在线| 欧美激情一区二区三区在线视频观看 | 欧美成人午夜激情| 欧美综合国产| 亚洲欧美日韩综合aⅴ视频| 亚洲国产一区视频| 欧美freesex8一10精品| 久久亚洲免费| 欧美专区在线播放| 亚洲综合精品| 亚洲自拍偷拍色片视频| 日韩午夜三级在线| 亚洲精品久久7777| 亚洲国产高潮在线观看| 一区二区三区在线视频播放| 国产一区二区三区电影在线观看| 国产精品va| 国产精品美女主播在线观看纯欲| 欧美日韩在线免费| 欧美日韩亚洲三区| 欧美日韩在线另类| 国产精品欧美日韩久久| 国产精品日日做人人爱| 国产精品少妇自拍| 国产情人节一区| 国产资源精品在线观看| 国产亚洲制服色| 精品不卡一区| 亚洲精品一品区二品区三品区| 亚洲人成小说网站色在线| 91久久国产综合久久| 99pao成人国产永久免费视频| 99国产成+人+综合+亚洲欧美| 一二三区精品| 午夜精品免费在线| 久久久噜噜噜久久| 欧美激情91| 国产伦精品一区二区三区免费| 国内成人精品视频| 91久久国产综合久久91精品网站| 日韩小视频在线观看专区| 在线亚洲精品| 久久精品卡一| 国产综合亚洲精品一区二| 一区二区三区中文在线观看| 91久久在线| 亚洲一区二区三区乱码aⅴ| 欧美一区二区视频观看视频| 麻豆国产精品777777在线| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲精品影院| 欧美一区二区在线播放| 欧美大片一区二区三区| 国产精品极品美女粉嫩高清在线 | 亚洲人成网站777色婷婷| 国产精品99久久久久久有的能看| 亚洲自拍电影| 欧美不卡在线| 亚洲一区一卡| 欧美国产日韩一区二区三区| 国产精品永久入口久久久| 亚洲二区视频| 久久九九国产精品怡红院| 亚洲精品你懂的| 亚洲午夜小视频| 免费观看久久久4p| 亚洲欧洲在线播放| 午夜视频一区| 欧美亚一区二区| 亚洲国产精品视频| 欧美在线看片| av成人免费观看| 免费国产一区二区| 国产亚洲a∨片在线观看| 中文日韩在线| 亚洲国产精品一区二区久| 久久福利毛片| 国产精品一二三四区| 一个人看的www久久| 欧美二区乱c少妇|