[問題] printf

看板C_and_CPP作者 (leo)時間13年前 (2010/09/17 16:17), 編輯推噓0(0018)
留言18則, 7人參與, 最新討論串2/2 (看更多)
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 關於printf 要算1的三次方加到X的三次方 範圍由一到50000 希望得到的正確結果: 程式跑出來的錯誤結果: 輸入50000顯示的答案部隊 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) dev c 有問題的code: (請善用置底文標色功能) #include<stdio.h> main(){ long long unsigned input=0; long long unsigned sum=0,n; while(scanf("%llu",&input)==1){ if(input<1 || input>50000){ break; } sum = (input*input*(input+1)*(input+1))/4; printf("%llu\n",sum); } return 0; } 補充說明: %llu是網路上查到的 應該是long long unsigned 但輸入50000時還是會出錯 我50000 跑出來是3306776128 49999 跑出來是4034958912 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.176.208

09/17 16:23, , 1F
所以你顯示出來到底是多少?還有變數宣告沒 unsigned。
09/17 16:23, 1F
※ 編輯: leo770429 來自: 140.117.176.208 (09/17 16:48)

09/17 17:01, , 2F
我跑出來的結果 (50000)1562562500625000000
09/17 17:01, 2F

09/17 17:02, , 3F
(49999)1562437500625000000
09/17 17:02, 3F

09/17 17:08, , 4F
不過我是當C++來編 XD
09/17 17:08, 4F

09/17 17:52, , 5F

09/17 17:52, , 6F
疑似是這個問題。
09/17 17:52, 6F

09/17 17:53, , 7F
我在 FreeBSD 下直接用 gcc 編跑出來跟樓上一樣。
09/17 17:53, 7F

09/17 17:58, , 8F
答案部隊 XD
09/17 17:58, 8F

09/17 19:16, , 9F
我的結果跟三樓.四樓一樣 (50001)1562687508125150001
09/17 19:16, 9F

09/17 19:17, , 10F
(49999)1562312508124850001
09/17 19:17, 10F

09/17 19:19, , 11F
樓上19:17打錯,更正如右: (49998)1562312508124850001
09/17 19:19, 11F

09/17 19:19, , 12F
我用自己的寫法寫的 a piece of cake?!
09/17 19:19, 12F

09/17 19:20, , 13F
(我的答案應該沒錯吧?!)
09/17 19:20, 13F

09/17 20:47, , 14F
謝謝五樓 改%I64d就可以了
09/17 20:47, 14F

09/17 20:47, , 15F
有人能解釋一下%I64d的意思嗎
09/17 20:47, 15F

09/17 22:09, , 16F
就是int64的decimal
09/17 22:09, 16F

09/18 13:56, , 17F
噢不!那是痿軟的規格!
09/18 13:56, 17F

09/19 10:06, , 18F
好像可以不用unsigned
09/19 10:06, 18F
文章代碼(AID): #1CaoG2xz (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1CaoG2xz (C_and_CPP)