今天閒來無事,再次除錯這個問題,發現微軟的編譯器還真是奇葩,經常遇到++與+=的混合計算,如下:
int a=1, b=3, c=10;
int e, f;
int d = 5;
++d += (e=++d) + c; (1)
d +=(e=d++) + c; (2)
++d +=(e=d++) + c; (3)
cout << d << 「 」《分別對上述三種進行測試得到的結果分別為(1)24 7 (2)21 5 (3)23 6
以上結果的得出的計算步驟如下:
++d += (e=++d) + c; //1.++d->d=6 2.++d->d=7 3.d=d+d=14 4.d=14+10=24
d +=(e=d++) + c; 2.d=10+10=20 3. d=20+1=21
++d +=(e=d++) + c; 2. d=d+d=12 3.d=12+10=22 4.d=22+1=23
總結一下就是,如果有val++,先計算+=的表示式 ,最後再計算val=val+1;如果是++val,先計算val=val+1,然後計算+=的表示式。
如第一例:先計算++d=》d=6,然後再計算++d=》d=7,接著就計算+=表示式就是d=7+7=14,最後計算d=14+10,其實最後兩步可以算做一步。
後期再測試linux下gcc編譯器的結果。。。
Kinect C 程式在vs2012下的配置
在vs2010上的配置大約是 a.在vs2010專案中,設定vc 目錄 包含目錄中加入 kinectsdk10 dir inc 庫目錄中加入 kinectsdk10 dir lib x86 b.新增特定庫 在鏈結器中設定附加依賴項,填入kinect10.lib c.標頭檔案包含 include in...
MK6589平台下的mk命令
makemtk mk options project actions modules options t tee 列印log資訊 o,opt 傳遞額外的引數 h,help 檢視幫助資訊 actions new clean remake,bm new bm remake mm emigen nandg...
STM32平台下的FreeRTOS移植
本文目的是在keil uvision5 mdk 上把freertos移植到stm32平台上去,並練習使用freertos的任務排程功能 二 freertos移植到stm32 三 基於freertos的多工程式 四 總結 特點 freertos核心檔案 可以看出source資料夾下有include資料...