为什么 scanf 中需要 %hd ?

2024-02-22

我创建了一个非常简单的程序,带有菜单, 取一个值,然后将其记忆到 局部变量值,最后与 第二个选项是程序打印该值。

我的问题是: 为什么只有添加“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(使用前将#替换为@)

为什么 scanf 中需要 %hd ? 的相关文章

随机推荐

  • 在 Windows Phone 7 上从独立存储打开 JPEG 时出现问题

    Scenario 应用程序打开 检查隔离存储中是否存在背景图像 如果没有 从网络下载 并将其保存到独立存储 从独立存储加载图像并将其设置为全景控件上的背景 Problem 图像未在 GUI 中加载 当我检查从独立存储接收的字节数组时 它包含
  • Javascript 困境:创建荧光笔工具……快完成了

    我正在开发一个小 JS 插件 我希望它的功能与真正的荧光笔完全一样 取一个标准的 html 文本 div 带有子元素 用鼠标选择文本 并在鼠标松开时保持突出显示不变 看起来相当简单 对吧 这是我到目前为止所拥有的 http efflux u
  • NewtonSoft.Json 序列化和反序列化具有 IEnumerable 类型属性的类

    我正在尝试移动一些代码来使用 ASP NET MVC Web API 生成的 Json 数据而不是 SOAP Xml 我遇到了序列化和反序列化类型属性的问题 IEnumerable
  • iOS:如何获取长按手势的持续时间?

    我正在开发一款游戏 其中游戏对象的属性是通过长按对象本身来设置的 该属性的值由长按手势的持续时间决定 我正在使用 UILongPressGestureRecognizer 来实现此目的 所以它是这样的 gameObjectView addG
  • Eclipse、Scala 和 Maven - 未生成类文件

    我在 Eclipse 中将我的 scala 项目转换为使用 Maven 只需右键单击项目并配置 Maven 构建 这创建了 pom xml 添加了正确的依赖项 从 Maven 存储库中提取所需的 jar 但每当我尝试编译时 我不会请参阅 t
  • Laravel - Collection::delete 方法不存在

    我正在尝试测试 boot static deleting 方法 该方法应该在通过 Eloquent 删除模型时触发 Tinker 中的命令App User find 6 gt delete 返回 方法 Collection delete 不
  • 迭代哈希在 Python 和 Java 中返回不同的值

    我正在尝试将 python 2 7 脚本移植到 Java 它多次迭代 sha256 哈希 但最终得到不同的结果 我注意到他们第一次返回相同的结果 但从那时起它就不同了 这是 Python 实现 import hashlib def to h
  • Windows 窗体的多个滑块轨迹栏

    有谁知道如何在 WinForms 中创建带有多个滑块的跟踪栏 我想标记一个范围 另外 是否可以将滑块垂直偏移一点 我的目标是在轨迹栏上方有两个滑块 在轨迹栏下方有两个滑块 v v 您可以通过编写自己的代码来做到这一点UserControl您
  • 使用 bootstrap 主题从链接添加自定义类到 drupal-modal drupal 8

    在 Drupal 8 中 当您使用以下命令创建链接时使用引导主题class and data dialog type属性如下面的代码 a class use ajax href http drupal page front text a 您
  • 我可以在C#中反序列化包含0.0的JSON字符串吗?

    我从 Web 服务返回的 JSON 有一个整数 错误地表示为 0 0 我的反序列化代码如下所示 var serializer new JsonSerializer var ret serializer Deserialize
  • 使用 R 将多个文件从多个文件夹复制到单个文件夹

    嘿我想问如何使用R语言将多个文件夹中的多个文件复制到单个文件夹 假设有三个文件夹 桌面 文件夹 A 任务 子任务 桌面 文件夹 B 任务 子任务 桌面 folder C 任务 子任务 每个sub task文件夹中都有多个文件 我想复制 su
  • Microsoft Teams 中的 ActionTypes.MessageBack 存在问题?

    我正在使用带有 C 的 Bot Builder 3 11 版本 我有一个 ActionTypes MessageBack 类型的操作按钮 具有以下属性 cardActions Add new CardAction Type ActionTy
  • CSS !important 声明在 Outlook 2007 中不起作用

    我想创建一个锚颜色为红色的电子邮件模板 它应该是 重要的声明以避免继承其他样式值 不幸的是 它在 Outlook 2007 2010 中无法正确呈现 有人有类似的经历吗 与 Outlook 中的 important 标记支持相关的问题 我在
  • 如何同步两个View的drawable状态

    在 Android 中 我有一个 EditText 和一个位于 EditText 旁边的按钮 每当我按下一个按钮时 我都希望另一个也以相同的状态出现 我尝试将 android clickable true 放在封闭布局上 将 android
  • 对角化符号矩阵

    我需要用 python 对角化一个符号矩阵 在 Mathematica 中这可以很容易地完成 但是当使用模块时numpy linalg我遇到问题 为了具体起见 请考虑矩阵 2 x x 3 where x是一个符号变量 我想我遇到了问题 因为
  • 为 UIFont 定义宏不起作用

    我想定义一个宏来统一我的应用程序中的所有字体 define EXO REGULAR FONT size UIFont fontWithName Exo Regular size size 而不是像这样使用这个宏 myLabel font E
  • 如何在 Espresso 中的 RecyclerView 内部断言?

    我正在使用 espresso contrib 来执行操作RecyclerView 并且它应该正常工作 例如 click on first item onView withId R id recycler view perform Recyc
  • C# 生产质量线程安全内存中 LRU 缓存是否过期?

    这也许就像求棒上的月亮一样 但是是否有 C 生产质量的线程安全内存中 LRU 缓存 带过期 或者有人有最佳实践想法来实现同样的事情吗 LRU 是 最近最少使用 http en wikipedia org wiki Cache algorit
  • ListView 中每个项目的单独首选项?

    我正在创建我的第一个 Android 应用程序 或者无论如何都在尝试 但我有一个问题 我似乎找不到答案 我想允许用户为列表视图中的每个项目输入一组单独的首选项 我的 PreferenceScreen 正在工作 但它为每个项目维护相同的首选项
  • 为什么 scanf 中需要 %hd ?

    我创建了一个非常简单的程序 带有菜单 取一个值 然后将其记忆到 局部变量值 最后与 第二个选项是程序打印该值 我的问题是 为什么只有添加 h 程序才能运行 到 scanf 参数 换句话说 存在什么样的关系 scanf 和我的本地 int 值