ackfbcu
2014-12-04 13:27
采纳率: 100%
浏览 1.8k
已采纳

scanf(),printf()输入,输出问题

scanf("%d %d %d",&i,&j,&k); printf("%d %d %d\n",i,j,k),i,j为int型,k为char型时,输入任意三个数,输出的第二个数总是0,如输入1 2 3 则会输出1 0 3,i,j,k都是 int型时,输出和输入一样,请问是什么原因?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • 李洛克07 2014-12-04 14:03
    已采纳

    定义的时候顺序是 ijk, scanf 将 输入信息以sanf 制定 格式写入, sanf 的时候是%d, k 写入的区域认定为整型, 4字节, 由于栈的特点, 在前面定义的j的低三位被擦除了。所以看起来是0

    打赏 评论
  • zhkmxx930 2014-12-04 14:05

    我这边没问题捏,你是啥编译器

    打赏 评论
  • 赵4老师 2014-12-05 03:35

    理解和讨论之前请先学会如何观察!

    计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……

    对学习编程者的忠告:
    多用小脑和手,少用大脑、眼睛和嘴,会更快地学会编程!
    眼过千遍不如手过一遍!
    书看千行不如手敲一行!
    手敲千行不如单步一行!
    单步源代码千行不如单步Debug版对应汇编一行!
    单步Debug版对应汇编千行不如单步Release版对应汇编一行!

    VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
    对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
    (Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)

    打赏 评论
  • ackfbcu 2014-12-05 10:48

    谢谢各位的回答了,受益匪浅,@zhkmxx930,我用的编译器是DEV-C++。

    打赏 评论

相关推荐 更多相似问题