[英]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.