c语言 int类型数据的输出问题

2025-03-10 08:05:08
推荐回答(3个)
回答1:

%5.2 5表示宽度至少为5位,不够以空格填充,大于5位的时候按照实际宽度输出 2表示最大小数位数

以下内容 copy 希望对你有帮助

int printf(const char *format,[argument]);

  format 参数输出的格式,定义格式为:

  %[flags][width][.perc] [F|N|h|l]type

  规定数据输出方式,具体如下:

  1.type 含义如下:

  整数
%d 整数的参数会被转成一有符号的十进制数字
%u 整数的参数会被转成一无符号的十进制数字
%o 整数的参数会被转成一无符号的八进制数字
%x 整数的参数会被转成一无符号的十六进制数字,并以小写abcdef表示
%X 整数的参数会被转成一无符号的十六进制数字,并以大写ABCDEF表示浮点型数

%f double 型的参数会被转成十进制数字,并取到小数点以下六位,四舍五入。
%e double型的参数以指数形式打印,有一个数字会在小数点前,六位数字在小数点后,而在指数部分会以小写的e来表示。
%E 与%e作用相同,唯一区别是指数部分将以大写的E 来表示。
%g double 型的参数会自动选择以%f 或%e 的格式来打印,其标准是根据欲打印的数值及所设置的有效位数来决定。
%G 与%g 作用相同,唯一区别在以指数形态打印时会选择%E 格式。

字符及字符串
%c 整型数的参数会被转成unsigned char型打印出。
%s 指向字符串的参数会被逐字输出,直到出现NULL字符为止
%p 如果是参数是“void *”型指针则使用十六进制格式显示,near指针表示为:XXXX,far 指针表示为:XXXX:YYYY

  %% 显示百分号本身 

  %n 相连参量应是一个指针,其中存放已写字符的个数

  2.flags 规定输出格式,取值和含义如下:

  无右对齐,左边填充0和空格

  - 左对齐,右边填充空格

  + 在数字前增加符号 + 或 -

  一个空格只对负数显示符号

  # 当type=c,s,d,i,u时没有影响

   type=o,x,X时,分别在数值前增加'0',"0x","0X"

   type=e,E,f时,总是使用小数点

   type=g,G时,除了数值为0外总是显示小数点

3.width 用于控制显示数值的宽度,取值和含义如下

n(n=1,2,3...) 宽度至少为n位,不够以空格填充

  0n(n=1,2,3...) 宽度至少为n位,不够左边以0填充 *

格式列表中,下一个参数还是width

4..prec 用于控制小数点后面的位数,取值和含义如下:

  无按缺省精度显示

  0 当type=d,i,o,u,x时,没有影响

   type=e,E,f时,不显示小数点

  n(n=1,2,3...) 当type=e,E,f时表示的最大小数位数

   type=其他,表示显示的最大宽度 .*

  格式列表中,下一个参数还是width

  5.F|N|h|l 表示指针是否是远指针或整数是否是长整数

  F 远指针

  n 近指针

  h 短整数或单精度浮点数

  l 长整数或双精度浮点数

回答2:

ASCII码值为 23 表示 :23 ETB (end of trans. block) 传输块结束

所以后面的内容就不输出了。

你的第一个测试中,也只是输出b的%d输出,也没有输出%c,这是因为23这个ASCII码表示传输块的结束。

你换成 55,56 56,55 都会正确的

回答3:

ret1=scanf("%d,%d",&a,&b);你确定这个语句没有错?在我的vc6.0中这是个错误的语句。然后你后面的语句我真的是看不太懂为什么会输出你第一次的结果= =||