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

问题描述

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

scanf(),printf()输入,输出问题的相关文章

关于char a,b,c,%d,%c%d分两次用scanf函数输入,却清零了第一次的数值问题

问题描述 关于char a,b,c,%d,%c%d分两次用scanf函数输入,却清零了第一次的数值问题 #include #include main() { unsigned char a,b,c; scanf("%d",&a); printf("%dn",a); getchar(); printf("%dn",a); scanf("%c %d",&b,&c); printf("%d,%c,%

《C语言程序设计与实践(第2版)》——2.5 输入/输出

2.5 输入/输出 输入/输出是程序设计中最为基础的一部分内容,通常我们会对输入的数据进行处理,然后输出某个结果.在例2-1中(打印一个周期内余弦函数离散值表),使用printf函数来实现数据的输出,这是一个通用格式化输出函数,后面会对此做详细介绍.该函数的第一个参数是格式控制字符串,由两部分组成:普通字符和控制字符.普通字符原样输出,控制字符是指以百分号(%)和一个字母组合成的字符,输出时用对应的参数变量的值替换.对应规则为第一个控制字符对应函数的第二个参数,第二个控制字符对应函数的第三个参数

c语言-C语言用scanf清理输入缓存的一个程序

问题描述 C语言用scanf清理输入缓存的一个程序 源程序如下:#includeint main(){ int num; printf(""输入数字:""); scanf(""%d""&num); printf(""输入了数字:%dn""num); printf(""是否继续测试:[Y/N]"");scanf(""%*[

汇编教程之内存管理和文件输入/输出

本课中我们将学习基本的内存管理和文件输入/输出操作方面的知识.另外我们还将用上课学的通用对话框作为我们的显示"设备". 理论: 从用户的角度来看,WIN32的内存管理是非常简单和明了的.每一个应用程序都有自己独立的4G地址空间,这种内存模式叫做"平坦"型地址模式,所有的段寄存器或描述符都指向同样的起始地址,所有的地址偏移都是32位的长度,这样一个应用程序无须变换选择符就可以存取自己的多达4G的地址空间.这种内存管理模式是非常简洁而便于管理的,而且我们再不用和那些令人

《算法技术手册》一3.5.2 输入/输出

3.5.2 输入/输出 凸包问题实例由一个点集P定义. 输出是一系列的(x,y)点,即顺时针输出凸包上的点.哪个点在最前面并不重要.

python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)_python

一.变量和表达式 复制代码 代码如下: >>> 1 + 1               2>>> print 'hello world' hello world>>> x = 1               >>> y = 2>>> x + y3 Python是强类型语言,无法根据上下文自动解析转换成合适的类型. Python是一种动态语言,在程序运行过程中,同一个变量名在运行的不同阶段可以代表不同形式的值(整型,浮

c语言问题-scanf函数输入问题

问题描述 scanf函数输入问题 为什么在scanf()函数中要输入多个转换说明符时,中间要加个空格,例如scanf("%s %s"......) 解决方案 不加空格怎么区分呢?比如 %s%s,你输入123,到底是12 3还是1 23或者是1 2,3忽略呢 解决方案二: 你如果想直接输入八进制,不得告诉计算机你的格式啊 解决方案三: %s这种接受字符串的操作尽量只写一个,其它的类型接受可以多写. 解决方案四: scanf函数里面的空格是没必要加的吧,运行的时自己输入需要加空格区分两个数

printf十六进制输出问题

问题描述 printf十六进制输出问题 譬如十六进制变量 m = 4D42,应该如何用printf输出其代表的Ascii字符"BM",我用的printf("%c",m),只输出第一个字符,printf("%c%c",m)也不行.谢谢! 解决方案 unsigned int mm = 0x4d42; fprintf(fp,"%C%C",mm%256,mm/256); // 小尾序,先取后两位做为第一个字母的ASCII值,再取前两位

python 教程 第十章、 输入/输出

第十章. 输入/输出 1)    文件 poem = '''Programming is fun use Python!''' f = file('poem.txt', 'w') # open for 'w'riting f.write(poem) # write text to file f.close() # close the file 可以使用help(file)来了解详情. 2)    储存器 pickle在文件中储存Python对象,cPickle(C语言,更快) import cP