線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:757
推到 Plurk!
推到 Facebook!

我想請問大大:為何C的值都不會加呢?

尚未結案
hsientse
一般會員


發表:1
回覆:1
積分:0
註冊:2004-07-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-04 14:46:26 IP:140.113.xxx.xxx 未訂閱
我想用二值化的動態影像,將二值化影像可以得到全部平均的一個值,利用此值來記數,讓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;yHeight;y ) { ptr=(Byte *)Bitmap1->ScanLine[y]; for(int x=0;xWidth*3;x =3) { gray=0.114*ptr[x] 0.587*ptr[x 1] 0.299*ptr[x 2]; ptr[x]=gray; ptr[x 1]=gray; ptr[x 2]=gray; A =gray; } } Image2->Picture->Assign(Bitmap1); //灰階化結果 B=A/76800; if ( (B>(Threshold-10) ) || (B< (Threshold 10) ) ) { C=C ; } Label2->Caption=B; Label3->Caption=C;
liangnet
中階會員


發表:19
回覆:148
積分:83
註冊:2004-01-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-04 16:04:59 IP:218.170.xxx.xxx 未訂閱
引言: if ( (B>(Threshold-10) ) || (B< (Threshold 10) ) ) { C=C ; // <==可以寫成C ,同C = C 1; }
如果你的意思是要讓c這個變數內容不被清除的話,可以將c宣告為靜態變數 static int C = 0;
ENIX007
高階會員


發表:28
回覆:274
積分:185
註冊:2003-11-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-04 16:44:36 IP:203.70.xxx.xxx 未訂閱
插個花~~ 小弟對這個式子頗有興趣 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-04 17:41:07 IP:211.76.xxx.xxx 未訂閱
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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-04 17:58:29 IP:203.70.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-08-04 18:00:56 IP:211.20.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-08-04 18:28:16 IP:203.70.xxx.xxx 未訂閱
對不起各位 小弟的實驗方式錯誤... 在>把> 也就是 > < > 程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
------
程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-08-04 22:37:41 IP:211.76.xxx.xxx 未訂閱
大家好:    想不到發生案外案,導致答覆離本題有一點遠。 > 不過害 > 最重要的是: >
ENIX007
高階會員


發表:28
回覆:274
積分:185
註冊:2003-11-27

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-08-05 09:21:52 IP:203.70.xxx.xxx 未訂閱
抱歉抱歉...插花插得太過火了 不過請容我插最後一朵花... > 非常感謝 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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-08-05 09:34:55 IP:140.113.xxx.xxx 未訂閱
感謝各位先進幫忙解決我的問題,也讓我多上了一課,謝謝各位!!!
系統時間:2024-07-04 6:53:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!