问题描述
- scanf(),printf()输入,输出问题
-
scanf("%d %d %d",&i,&j,&k); printf("%d %d %dn",i,j,k),i,j为int型,k为char型时,输入任意三个数,输出的第二个数总是0,如输入1 2 3 则会输出1 0 3,i,j,k都是 int型时,输出和输入一样,请问是什么原因?
解决方案
定义的时候顺序是 ijk, scanf 将 输入信息以sanf 制定 格式写入, sanf 的时候是%d, k 写入的区域认定为整型, 4字节, 由于栈的特点, 在前面定义的j的低三位被擦除了。所以看起来是0
解决方案二:
理解和讨论之前请先学会如何观察!
计算机组成原理→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对应的汇编并单步执行观察相应内存和寄存器变化。)
解决方案三:
我这边没问题捏,你是啥编译器
解决方案四:
谢谢各位的回答了,受益匪浅,@zhkmxx930,我用的编译器是DEV-C++。
时间: 2024-09-01 22:26:46