-
首先要说明的两点是:
C++提供CIN和COUT进行输入和输出,不建议在C语言中使用ScanF和PrintF进行输入和输出;
如果使用 scanf 和 printf 进行输入和输出,应该遵循格式规范,不要试图测试不匹配,你的问题是 %ld 显然是针对长类型数据的,你必须用它来接收短类型变量,所以得到的结果不确定,完全没有意义(因为 C 语言设计的初衷是将语言用于成熟的程序员, 认为使用C语言的人会遵循规范,确保输入和输出正确是C程序员的责任)。
接下来,对于您的问题,请使用格式字符串作为您的问题:
short 变量,选择 scanf 函数要分配的 %ld 格式字符串,结果未定义;
我只想输出前5个字符,如何使用格式字符串来实现,我目前没有办法实现,除非对原来的字符串进行处理,把前5个字符取出来形成一个子字符串,然后输出;
输出16十进制数时,数据前缀怎么办? 使用 %x 应该没问题;
scanf 函数只能接受 %lf 来处理 double 变量,并且不能指定格式,该格式应在 printf 中指定,而不是 scanf。
-
1.对于短变量,使用 %ld 格式字符串通过 scanf 函数分配值的结果是什么?
int整数范围没有问题,(short与int整数范围相同)2如果只想输出前 5 个字符,如何使用格式字符串?
形状像 printf("%", "12345678"),可以输出字符串的前 5 位数字。
-
例如,做空 a=10,b=20; 在内存中,A 和 B 各占用 2 个字节,并存储在连续的地址中。
printf("%d%d",a,b);a 和 b 的值分别输出。
printf("%ld",a);两个变量 A 和 B 占用的 4 个字节将被视为长变量的内容,输出输出。
-
它与编译器和运行时环境有关。
vc6 的结果相同。
-
int a = 0x10203040;
short b = a;
short 是 2 个字节,给 b 赋值会产生“溢出”。 不同的编译器对溢出数有不同的方法。 大多数做法都是“截断”的,其中十六进制数的下 4 位数字被截断,而上面的 4 位数字由于溢出而被丢弃。
所以 b = 0x3040,即十进制中的 12352
-
%lf 是 double 类型的输入格式,%ld 是长整数的输入格式,如果使用 %f 或 %d,输入值会不正确,输出可以不带 l
-
禁止事项:scanf() 格式字符串中的星号表示禁止赋值。 同样的事情可以通过 ANSI 的字符串化和字符连接来完成,或者您可以在运行时创建 scanf 格式的字符串。
-
这是它的工作原理。
#include
int main()
float x,y;
scanf("%f,%e",&x,&y);
printf("x=%f,y=%f",x,y);缺少参数。
return 0;
-
printf("x=%f,y=%f",x ,y);加上变量 x,y,它是输出对象。
没有输出对象,printf() 中的参数是错误的,无事可做0x30玩,一起和 c c++ 交流
-
在C语言中,双精度输入和输出的格式是%lf,不管写成%f,都是float类型。
#include
int main()
2.字符定义如下。
字符对应于数据类型和含义。
d i int 取一个整数值并将其表示为有符号十进制整数,i 是老式的书写方式。
o unsigned int 是一个无符号的八进制整数(不输出前缀 0)。
u unsigned int 是一个无符号十进制整数。
x x unsigned int 是一个无符号的十六进制整数,x 对应 abcdef,x 对应 abcdef(不输出前缀 0x)。
f(lf) float(double) 将 f 用于单精度浮点数,将 lf 用于双精度浮点数(尤其是 scanf 不能混合)。
e e 双科学记数法表示数字,这里"e"大小写表示输出中使用的“e”的大小写。
g g double 使用上述两者中最短的形式,大写和小写使用相同的 %e 和 %e
c 字符。 您可以根据 ASCII 代码将输入的数字转换为相应的字符。
s s char * wchar t * 字符串。 输出字符串中的字符,最多为字符串中的空字符(字符串以'0'结束,这个'\0'即空字符)。
p void * 以十六进制形式输出指针。
n int * 到目前为止将输出的字符总数,而不是文本。
没有输入不转换,输出字符“%”百分比)本身。
m None 打印与错误内容对应的 errno 值,(例如 printf(.)"%m");
-
精度不够,截断它。
改成这个。 #include
void main( )
输入浮点数时使用 f。
-
float 是 4 个字节,double 是 8 个字节,如果你想写 double,你必须写 8 个字节,而 4 个字节的写入使其他 4 个字节成为随机数,你可以用 long float 代替 double,因为他也是 8 个字节。
-
#include
void main()
双精度双精度双用%lf,不信,你试一试。 有好的一天!
-
由于 double 不能使用 %f 来控制输入和输出,因此应使用 %ld 来控制输入和输出。
#include
void main( )
-
scanf(“%lf”,&x) 或 scanf(“%le”,&x) 可用于输入 double 类型的数据。
空头的值可以是 -32768 或 32767,空头的长度为 16。 >>>More