我想請問大大:為何C的值都不會加呢? |
尚未結案
|
hsientse
一般會員 發表:1 回覆:1 積分:0 註冊:2004-07-10 發送簡訊給我 |
我想用二值化的動態影像,將二值化影像可以得到全部平均的一個值,利用此值來記數,讓C的值可以累加!請幫幫忙囉! Graphics::TBitmap *Bitmap1 = new Graphics::TBitmap();
Byte *ptr;
int r,g,b;
int A=0;
int B=0;
int C=0;
int i,j;
int Threshold;
Threshold=ScrollBar1->Position; Bitmap1->Assign(Image1->Picture->Bitmap); for(int y=0;y
|
liangnet
中階會員 發表:19 回覆:148 積分:83 註冊:2004-01-03 發送簡訊給我 |
|
ENIX007
高階會員 發表:28 回覆:274 積分:185 註冊:2003-11-27 發送簡訊給我 |
插個花~~
小弟對這個式子頗有興趣
C=C++;
因為,2個編譯器產生的結果不一樣...
VC++6.0--->C值會累加
BCB5.0---->C值不會累加 式子展開應該像這樣
C=C=C+1;
問題出在assign的順序,先將式子改為
C=C1=C2+1 假設C=C1=C2=0
VC++6.0應該是先執行C1=C2+1,再執行C=C1...C=1
BCB6.0則是猜測...先執行C1=C2,然後C=C1,C2+1...C=0 所以,最好不要這樣寫 程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
------
程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~ |
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
hsientse 您好: 1.liangnet大大的回答應該就是您要的。另外如果這個值還要給別的地方用,也可以宣告成global。 2.插播一下!
ENIX007大大的測試,我有不同的結果:
BCB compiler的解譯應為
C = C ; => 1) C = C; 2) C = C 1;
所以,答案還是會增加1,不過這個寫法還是避免較好。 底下是我在BCB6的測試碼,結果是2。
void __fastcall TForm1::Button1Click(TObject *Sender) { int c=1; c = c ; ShowMessage(IntToStr(c)); }所以這點似乎有討論的空間? |
ENIX007
高階會員 發表:28 回覆:274 積分:185 註冊:2003-11-27 發送簡訊給我 |
引言: BCB6.0則是猜測...先執行C1=C2,然後C=C1,C2 1...C=0糟糕糟糕 寫錯了,小弟使用的是<>> 順便節錄反組譯碼 < class="code"> Unit1.cpp.21: i=i ; 004016EE 8B55D4 mov edx,[ebp-0x2c] 004016F1 8B8AD8020000 mov ecx,[edx 0x000002d8] 004016F7 FF82D8020000 inc dword ptr [edx 0x000002d8] 004016FD 8B45D4 mov eax,[ebp-0x2c] 00401700 8988D8020000 mov [eax 0x000002d8],ecx BCB提供的反組譯碼小弟實在看不太懂
------
程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~ |
Albertz
初階會員 發表:2 回覆:57 積分:31 註冊:2002-09-05 發送簡訊給我 |
引言: 2.插播一下! ENIX007大大的測試,我有不同的結果: BCB compiler的解譯應為 C = C ; => 1) C = C; 2) C = C 1; 所以,答案還是會增加1,不過這個寫法還是避免較好。 底下是我在BCB6的測試碼,結果是2。 void __fastcall TForm1::Button1Click(TObject *Sender) { int c=1; c = c ; ShowMessage(IntToStr(c)); }把 c 宣告成 static 就可以了 void __fastcall TForm1::Button1Click(TObject *Sender) { static int c=1; c = c ; ShowMessage(IntToStr(c)); } |
ENIX007
高階會員 發表:28 回覆:274 積分:185 註冊:2003-11-27 發送簡訊給我 |
|
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
|
ENIX007
高階會員 發表:28 回覆:274 積分:185 註冊:2003-11-27 發送簡訊給我 |
抱歉抱歉...插花插得太過火了
不過請容我插最後一朵花... >
非常感謝 class="code">
no = no ;
00411A53 mov eax,dword ptr [this]
00411A56 mov ecx,dword ptr [this]
00411A59 mov edx,dword ptr [ecx]
00411A5B mov dword ptr [eax],edx
00411A5D mov eax,dword ptr [this]
00411A60 mov ecx,dword ptr [eax]
00411A62 add ecx,1
00411A65 mov edx,dword ptr [this]
00411A68 mov dword ptr [edx],ecx
因此,在類別中此式子仍然是會加1的!
所以問題還是在於編譯器對這種情形處理方式不同...
案外案就此打住囉,如果還有討論的空間,我在另開一個主題吧 程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
------
程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~ |
hsientse
一般會員 發表:1 回覆:1 積分:0 註冊:2004-07-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |