我创建了一个非常简单的带有菜单的程序,它接受一个值,然后将其存储到本地变量值中,并最终通过第二个选项打印该值。
我的问题是: 为什么只有在scanf参数中添加"h"时程序才能工作? 换句话说:scanf()和我的本地int值变量之间有什么关系?
谢谢!
附注:(我使用Dev-C++(GCC)进行编译。在Visual Studio中它可以工作)
我的问题是: 为什么只有在scanf参数中添加"h"时程序才能工作? 换句话说:scanf()和我的本地int值变量之间有什么关系?
谢谢!
附注:(我使用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();
}