談VS2012平台下 與 的關係

2021-06-20 14:34:43 字數 697 閱讀 8819

今天閒來無事,再次除錯這個問題,發現微軟的編譯器還真是奇葩,經常遇到++與+=的混合計算,如下:

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資料...