看板 C_and_CPP 關於我們 聯絡資訊
const char *s = "00_00_1"; // 多謝版友提醒 unsigned int res = 0; while(char t = *s++) { // char 00110000 : '0', 00110001 : '1' if(t == '0' || t == '1') res = (res << 1) | (t & 1); } 想請教一個問題,本來我的理解是 t 變數應該是在 while 結束之後, 就不見了,但是好像有遇過編譯器 while 結束後 t 還存在? (還是我又搞錯了??? XD) 可是 C++ 應該有規定這個 t 的生命週期吧? 感恩 ※ 引述《bwtalk (是黑是白)》之銘言: : 開發平台(Platform): DEV C++ : 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) : 有用到bitset : 問題(Question): : 有點崩潰.. : 由於需要將2進位字串換直接轉成10進位的整數 : 所以最後選擇用bitset : 參考了文章#1BvInMXs 以及james732大的推文 : 但對bitset的還是不了解,一直出現bug.. : 餵入的資料(Input): : 00_0000_10 : 預期的正確結果(Expected Output): : 2 : 錯誤結果(Wrong Output): : 有時候會出現↓ : This application has required the Runtime to terminate it in an unusual way. : 即使沒出現 答案也是錯的 囧 : 程式碼(Code):(請善用置底文網頁, 記得排版) : http://ideone.com/yIWoC : 補充說明(Supplement): : 這個程式是要將二進位字串轉成10進位整數 : 其中輸入的資料中,底線'_'要忽略掉,ex 00_0001_00 要輸出4 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.110.137.131
james732:好像有遇過←這句話也太不確定了吧XD 01/06 00:59
tropical72:有,visual c++ 6.0, 但這套 compiler 也還是別用了. 01/06 01:00
james732:剛剛試了gcc,在while外是不能用t的,你也可以試試手邊的 01/06 01:00
applecool:(res<<=1) |= t&1; 是不是也是錯的? 01/06 01:02
applecool:謝謝,但為啥不要用 VC6?? 01/06 01:03
applecool:雖然有發現他一些 BUG,也不符合新標準,但好像還是流行 01/06 01:04
james732:我倒想問為什麼要選擇VC6,除了不得已的相容性問題外 01/06 01:11
diabloevagto:vc6有些不標準的實作、也有一些新標準沒有支援 01/06 01:13
tropical72:我以前選vc6的原因,主要是中文(簡中)資料多,且一些老專 01/06 01:27
tropical72:案是用6.0下去的.後來下定決心放棄主要除了bug外,重要 01/06 01:28
tropical72:原因還是相容性,愈來愈多軟體與vc6.0相衝突,且另一重點 01/06 01:31
tropical72:MFC 類別愈擴愈大,一些東西從頭架構根本就..放棄它吧.. 01/06 01:32
applecool:感謝~~不過什麼是跟VC6相衝??..不是出來都是 binary ? 01/06 01:38
tropical72:我的意思是,愈來愈多新的軟體,和vc6這軟體會相衝. 01/06 01:41
tropical72:謠傳有office2007↑,微軟新注音,win 7 不知會不會衝. 01/06 01:42
applecool:原來如此~多謝指教 01/06 01:45
※ 編輯: applecool 來自: 123.110.143.10 (01/09 22:20) ※ 編輯: applecool 來自: 123.110.143.10 (01/09 22:23)