看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev C++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) No 問題(Question): 二進位轉十進位 輸入字元數超過10位數會變成負的 餵入的資料(Input): 11111111111 預期的正確結果(Expected Output): 2047 錯誤結果(Wrong Output): -1015 程式碼(Code):(請善用置底文網頁, 記得排版) #include<stdio.h> #include<math.h> int main() { long int input; long int i,bit; long int C_result=0; printf("Input an integer containing only 0s and 1s: "); scanf("%ld",&input); for(i=0;input!=0;input/=10) { bit=input%2; C_result=C_result + bit*pow(2,i); i++; } printf("Result of convertion is %ld \n",C_result); system("Pause"); return(0); } 補充說明(Supplement): 我覺得是int宣告的長度問題 但是我換成long int 還是無法 有請各位幫忙了~~ --
Ainia:我打簽名擋 .....03/12 22:04
Ainia: 黨03/12 22:04
Ainia: 擋03/12 22:04
Ainia: 檔 = = 沒帶眼睛 手字旁跟木字旁根本在婊我03/12 22:05
Ainia:... 是眼鏡03/12 22:05
Ainia:可以不要變成簽名檔嗎 ...03/12 22:06
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.232.71
cooper6334:何不把input直接存成字串再以char為單位處理? 03/23 23:48
e158420502:剛學沒多久 不是很清楚char如何使用@@ 03/23 23:58
rock1985:long int 好像爆掉了,range沒這麼大 03/24 00:20
e158420502:我想也是 不過有其他可以不要讓他爆的宣告嗎? 03/24 00:25
KoenigseggG:long long int 03/24 00:38
loveme00835:http://codepad.org/QmRo5Enx 03/24 00:49
testff19432:http://codepad.org/Q7oLwMFT 03/24 01:00
loveme00835:0.0 03/24 01:05
e158420502:long long int 可以!!! 太強大了XDD 03/24 01:41
loveme00835:看來我不適合推文y 03/24 01:43
loveme00835:有用 long long 的必要嗎? 根本搞錯重點 03/24 01:59
testff19432:http://codepad.org/ZhE8x7Dh 這樣更省運算一點 03/24 10:05
e158420502:感謝L大 但是我們似乎沒教這麼多= =? 如果要到32位 03/24 10:11
e158420502:都有效 哪應該改掉甚麼 還是只能靠char來換? 03/24 10:12
james732:嘮叨一下,寫程式不可以說「這個我們沒教過」來當藉口 03/24 10:30
diabloevagto:unsign? 03/24 11:04
e158420502:j大 知道了~ 我會再研究的 謝謝指教=) 03/24 13:33
loveme00835:"不要自己算" 就是最省的做法 03/24 14:24
loveme00835:我寫的這些學校才沒有教 03/24 14:26
loveme00835:寫那種初心者也看得懂的code是侮辱你 03/24 14:27
firejox:L大 其實用unsigned long 去接strtoul 會比較好 03/24 21:36
firejox:畢竟是同一個型態... 03/24 21:37
loveme00835:ISO/IEC 989 6.3.1.3.1 依靠 implicit conversion 轉 03/24 21:47
loveme00835:成已知 bits 數的型別, 無 padding 後續位移就不用因 03/24 21:48
loveme00835:為給太多 assumptions 跑出奇怪結果自擾 03/24 21:49
loveme00835:是 9899 03/24 21:50
firejox:嗯嗯 長知識:) 03/24 22:01
Godmyfriend:剛學的時候我用getche()寫 03/25 00:22
e158420502:但是我照L大的跑過一次 每次要求別的值就要重新輸入 03/26 01:10
e158420502:然後讓她Run 我一開始想弄的是可依照使用者輸入的值 03/26 01:11
e158420502:做輸出~ 03/26 01:11