c 对于短变量,使用 scanf 函数为 LD 格式字符串赋值的结果是什么?

发布于 科技 2024-07-31
15个回答
  1. 匿名用户2024-01-31

    首先要说明的两点是:

    C++提供CIN和COUT进行输入和输出,不建议在C语言中使用ScanF和PrintF进行输入和输出;

    如果使用 scanf 和 printf 进行输入和输出,应该遵循格式规范,不要试图测试不匹配,你的问题是 %ld 显然是针对长类型数据的,你必须用它来接收短类型变量,所以得到的结果不确定,完全没有意义(因为 C 语言设计的初衷是将语言用于成熟的程序员, 认为使用C语言的人会遵循规范,确保输入和输出正确是C程序员的责任)。

    接下来,对于您的问题,请使用格式字符串作为您的问题:

    short 变量,选择 scanf 函数要分配的 %ld 格式字符串,结果未定义;

    我只想输出前5个字符,如何使用格式字符串来实现,我目前没有办法实现,除非对原来的字符串进行处理,把前5个字符取出来形成一个子字符串,然后输出;

    输出16十进制数时,数据前缀怎么办? 使用 %x 应该没问题;

    scanf 函数只能接受 %lf 来处理 double 变量,并且不能指定格式,该格式应在 printf 中指定,而不是 scanf。

  2. 匿名用户2024-01-30

    1.对于短变量,使用 %ld 格式字符串通过 scanf 函数分配值的结果是什么?

    int整数范围没有问题,(short与int整数范围相同)2如果只想输出前 5 个字符,如何使用格式字符串?

    形状像 printf("%", "12345678"),可以输出字符串的前 5 位数字。

  3. 匿名用户2024-01-29

    例如,做空 a=10,b=20; 在内存中,A 和 B 各占用 2 个字节,并存储在连续的地址中。

    printf("%d%d",a,b);a 和 b 的值分别输出。

    printf("%ld",a);两个变量 A 和 B 占用的 4 个字节将被视为长变量的内容,输出输出。

  4. 匿名用户2024-01-28

    它与编译器和运行时环境有关。

    vc6 的结果相同。

  5. 匿名用户2024-01-27

    int a = 0x10203040;

    short b = a;

    short 是 2 个字节,给 b 赋值会产生“溢出”。 不同的编译器对溢出数有不同的方法。 大多数做法都是“截断”的,其中十六进制数的下 4 位数字被截断,而上面的 4 位数字由于溢出而被丢弃。

    所以 b = 0x3040,即十进制中的 12352

  6. 匿名用户2024-01-26

    %lf 是 double 类型的输入格式,%ld 是长整数的输入格式,如果使用 %f 或 %d,输入值会不正确,输出可以不带 l

  7. 匿名用户2024-01-25

    禁止事项:scanf() 格式字符串中的星号表示禁止赋值。 同样的事情可以通过 ANSI 的字符串化和字符连接来完成,或者您可以在运行时创建 scanf 格式的字符串。

  8. 匿名用户2024-01-24

    这是它的工作原理。

    #include

    int main()

    float x,y;

    scanf("%f,%e",&x,&y);

    printf("x=%f,y=%f",x,y);缺少参数。

    return 0;

  9. 匿名用户2024-01-23

    printf("x=%f,y=%f",x ,y);加上变量 x,y,它是输出对象。

    没有输出对象,printf() 中的参数是错误的,无事可做0x30玩,一起和 c c++ 交流

  10. 匿名用户2024-01-22

    在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");

  11. 匿名用户2024-01-21

    精度不够,截断它。

    改成这个。 #include

    void main( )

    输入浮点数时使用 f。

  12. 匿名用户2024-01-20

    float 是 4 个字节,double 是 8 个字节,如果你想写 double,你必须写 8 个字节,而 4 个字节的写入使其他 4 个字节成为随机数,你可以用 long float 代替 double,因为他也是 8 个字节。

  13. 匿名用户2024-01-19

    #include

    void main()

    双精度双精度双用%lf,不信,你试一试。 有好的一天!

  14. 匿名用户2024-01-18

    由于 double 不能使用 %f 来控制输入和输出,因此应使用 %ld 来控制输入和输出。

    #include

    void main( )

  15. 匿名用户2024-01-17

    scanf(“%lf”,&x) 或 scanf(“%le”,&x) 可用于输入 double 类型的数据。

相关回答
22个回答2024-07-31

空头的值可以是 -32768 或 32767,空头的长度为 16。 >>>More

11个回答2024-07-31

如果未添加 0,则 sum 为任意值。 错误发生在这里。 >>>More

17个回答2024-07-31

当然不是,它们存储在内存的不同位置。

16个回答2024-07-31

你弄错了字节的含义。

字节不是 0 或 1,而是 8 个零或 1。 >>>More

18个回答2024-07-31

在中间使用类似的 2 次。

for(int i... >>>More