作者:
bjiyxo (若自礌)
2014-10-10 00:45:20開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
dev c++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
無
問題(Question):
printf("%lu,%lu,%lu\n",jj[k-1],k,k);
前面的k跟後面的k竟然值不同
而且前面的k固定值是0
神秘的是,使用64bit的compiler就會成為相同的值了
餵入的資料(Input):
1 3
預期的正確結果(Expected Output):
至少k要一致吧
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
http://ideone.com/kKFOvS
補充說明(Supplement):
QQ完全不知道從哪裡出現問題
作者:
scwg ( )
2014-10-10 01:52:00樓上幾位都指出是 format string 錯了, 其中造成前面的 k 固定是 0 的原因是第一個 %lu: jj[k-1] 是 long long 所以不能用 %lu, 要用 "%llu". 32bit compiler 會把 jj[k-1]的8bytes放進stack, %lu 拿前 4 bytes, 第二個 %lu 拿後 4 bytes,因此該印出 k 的第二個 %lu 印出的是 jj[k-1] 的後 4 bytes