我创建了一个非常简单的程序,带有菜单,
取一个值,然后将其记忆到
局部变量值,最后与
第二个选项是程序打印该值。
我的问题是:
为什么只有添加“h”程序才能运行
到 scanf 参数?
换句话说:存在什么样的关系
scanf() 和我的本地 int 值变量之间?
thanks!
附注(我使用Dev-C++(GCC)来编译它。
使用 Visual Studio 就可以了)
#include <stdio.h>
main () {
int value = 0;
short choice = 0;
do {
printf("\nYour Choice ---> ");
scanf("%d", &choice); /* replace with "%hd" and it works */
switch (choice) {
case 1:
printf("\nEnter a volue to store ");
scanf("%d", &value);
getchar();
printf("\nValue: %d", value);
break;
case 2:
printf("\nValue: %d", value);
break;
}
} while (choice < 3);
getchar();
}
With scanf
,“h”修饰符表示它正在读取一个短整数,您的变量choice
恰好是。因此,“%hd”只需要写入两个字节(在大多数机器上),而不是“%d”写入的 4 个字节。
欲了解更多信息,请参阅此scanf 上的参考页 http://www.cplusplus.com/reference/clibrary/cstdio/scanf/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)