楼主:
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