→ suhorng: jj 跟 k 又不是 unsigned long, 怎麼會用 %lu 10/10 01:09
→ suhorng: 編譯開個 -Wformat 讓 compiler 告訴你 10/10 01:10
→ bjiyxo: unsigned long跟unsigned int不是都是4B嗎?不能混用嗎QQ 10/10 01:22
→ bjiyxo: 不過即使使用%u也還是沒有改變結果? 10/10 01:27
→ lantw44: scanf 的 i 和 j 也要改成 %u 10/10 01:42
→ lantw44: 我這裡執行如果 scanf 沒改程式直接 crash 10/10 01:43
→ lantw44: unsigned long 和 unsigned int 不保證一樣大 10/10 01:44
→ lantw44: 也不保證是幾個 bytes 10/10 01:44
→ scwg: 樓上幾位都指出是 format string 錯了, 其中造成前面的 k 固 10/10 01:52
→ scwg: 定是 0 的原因是第一個 %lu: jj[k-1] 是 long long 所以不能 10/10 01:52
→ scwg: 用 %lu, 要用 "%llu". 32bit compiler 會把 jj[k-1]的8bytes 10/10 01:53
→ scwg: 放進stack, %lu 拿前 4 bytes, 第二個 %lu 拿後 4 bytes, 10/10 01:54
→ scwg: 因此該印出 k 的第二個 %lu 印出的是 jj[k-1] 的後 4 bytes 10/10 01:54
→ bjiyxo: 原來如此! 學到了! 非常感謝scwg大! 10/10 01:55
→ purincess: 請google LLP64, LP64, 會有更詳細的說明 XD 10/10 13:25
→ uranusjr: LPH66 表示: 10/10 14:42
推 LPH66: (探頭 10/10 16:27
推 EdisonX: 我笑了 10/10 20:44
→ purincess: 嗨LPH (揮手 10/11 00:34
→ carylorrk: 嗨 LPH66,今天下午打球,球你帶(誤 10/11 13:55
推 BlazarArc: XDDD 10/14 16:50
推 CP64: XDDDD 10/14 18:18