繁体   English   中英

带有CodeBlocks IDE的C中的Scanf函数是否有错误?

[英]Scanf function in C with CodeBlocks IDE is buggy?

我在我的CodeBlocks中运行了一些简单的代码,我想知道为什么scanf函数不能正确使用短裤!

下面的代码是一个示例。 该代码从用户那里获取了三个int编号,然后再次打印出来,非常简单-但是打印出的值与输入的值不匹配。

#include <stdio.h>

int main()
{
    short x, y, z;
    printf("Please enter three integers! ");
    scanf("%d %d %d", &x, &y, &z);
    printf("\n num1  =  %d  , num2 = %d  , num3  = %d ", x, y, z);

    return 0;
}

说明符%d仅用于int变量,但是如果short ,则必须使用%hi说明符代替%d

因此您的代码必须是:

#include <stdio.h>

int main() {
   short x , y , z ;
   printf("Please Enter three int Numbers ! ");
   scanf("%hi %hi %hi",&x,&y,&z);
   printf("\n num1  =  %hi  , num2 = %hi  , num3  = %hi ",x,y,z);
   return 0;
}

您可以在此处找到有关C数据类型及其说明符的更多信息: https : //en.wikipedia.org/wiki/C_data_types

简短的!= int

您将指针传递到(通常为2个字节)数据,然后scanf期望并写入4个字节

改变short x , y , z ; int x , y , z ;

一如既往的scanf不是越野车,但编码器是:)

PS忘记添加。 您还可以使用h格式修饰符。 如果您要扫描字符大小的变量,也有hh

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM