c语言中绝对值的写法

2023-12-09

我知道该解决方案很丑陋并且在技术上不正确,但我不明白为什么代码不起作用。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main (int argc, char *argv[]) {
    int u;

    scanf("%d", &u);
    printf("absValue = %u\n", u);

return 0;
}

%u 指定一个无符号十进制字符,但是当我输入负值时,它给出

absValue = 4294967293

或者,使用if命令,如何将负号转换为正号?

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main (int argc, char *argv[]) {
    int n;

    scanf("%d", &n);
    if(n < 0) {
        printf("absValue = -%d\n", n);
    } else {
        printf("absValue = %d\n", n);
    }
return 0;
}

第一段代码中最短的解决方案是更改printf声明如下:

    printf("absValue = %u\n", (unsigned)((u<0)?-u:u));

这将打印绝对值u。类型转换(unsigned)确保数据类型符合预期printf。该声明(u<0)?-u:u使用条件运算符选择值-u如果条件(u<0) 为真且u如果条件为假(即u>=0).

你的代码中的问题是u是一个有符号整数,这意味着它的值是使用二进制补码表示法4 个字节(*) 和printf不聪明。当你告诉printf显示无符号整数,然后printf将占用 4 个字节u并将它们解释为无符号整数。由于二进制补码中的负数存储为大正整数,这就是您看到的结果。

(*) 二进制补码的使用和int4 的大小取决于机器,但很常见。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c语言中绝对值的写法 的相关文章

  • 更快的算法来计算有多少数字可以被范围内的特定整数整除

    int a b c d 0 cin gt gt a gt gt b gt gt c for int i a i lt b i if i c 0 d cout lt
  • SetWindowsHookEx 函数返回 NULL

    我正在研究 DLL 注入 但收到错误如下 挂接进程失败 87 参数不正确 目标进程和dll都是64位的 注入代码为 BOOL HookInjection TCHAR target TCHAR dll name https msdn micr
  • WebClient读取错误页面的内容

    我有一个加载页面内容的应用程序 我使用 WebClient 类 即使服务器返回 404 500 等错误 我也需要检索内容 我需要这样的东西 WebClient wc new WebClient string pageContent try
  • 在运行时设置 DataGridView 上的 DataFormatString?

    是否可以在运行时设置 ASP NET DataGridView 中的列或单元格的 DataFormatString 属性 这应该有效 BoundField priceField grid Columns 0 as BoundField pr
  • 如何使用汇编获取BIOS时间?

    我正在从头开始实现一个小型操作系统 用于教育目的 现在 我想使用汇编来获取 BIOS 时间 我对此进行了很多搜索 但找不到任何代码示例来执行此操作 如果有人可以提供任何参考或代码示例或与此相关的任何内容 我将非常感激 See 时钟中断 1a
  • 为什么假设 send 可能返回的数据少于在阻塞套接字上传输的请求数据?

    在流套接字上发送数据的标准方法始终是调用 send 并写入一大块数据 检查返回值以查看是否发送了所有数据 然后再次调用 send 直到整个消息被接受 例如 这是一个常见方案的简单示例 int send all int sock unsign
  • rand() 播种与 time() 问题

    我很难弄清楚如何使用 rand 并使用 Xcode 用 time 为其播种 我想生成 0 到 1 之间的随机十进制数 该代码为我提供了元素 1 和 2 看似随机的数字 但元素 0 始终在 0 077 左右 有什么想法吗 我的代码是 incl
  • C 中的模仿函数重写

    具体来说 函数重写能够调用基本重写方法 这有两部分 一个是预编译的库代码 1 另一个是库的用户代码 2 我在这里实现了一个尽可能最小的经典 Person 和 Employee 示例 非常感谢了解 OOP 概念的铁杆 C 开发人员的回应 我正
  • 用 C# 制作 Vista 风格的应用程序

    我正在运行 Windows Vista 并且希望外观看起来像常规 Vista 程序 有没有关于如何构建 Vista 风格应用程序的真正好的教程 文章 我还想学习如何使用本机代码并将其转换为 C 如this http bartdesmet n
  • 导出到 CSV 时 Gridview 出现空行

    这个问题是由进一步讨论引发的这个问题 https stackoverflow com questions 6674555 export gridview data into csv file 6674589 noredirect 1 com
  • 如何使用泛型类型的 DataContractSerializer 编写自定义序列化器?

    我想编写一个自定义序列化器 用于将会话状态存储到Azure 缓存 预览版 这意味着这个自定义序列化器必须实现IDataCacheObjectSerializer 如果我错了 请告诉我 我需要编写这个自定义序列化程序的原因是我需要序列化一些包
  • 为什么重载方法在 ref 仅符合 CLS 方面有所不同

    公共语言规范对方法重载非常严格 仅允许根据其参数的数量和类型来重载方法 如果是泛型方法 则根据其泛型参数的数量进行重载 根据 csc 为什么此代码符合 CLS 无 CS3006 警告 using System assembly CLSCom
  • 如何在 C# 中使用 XmlDsigC14NTransform 类

    我正在尝试使用规范化 xml 节点System Security Cryptography Xml XMLDsigC14nTransformC net Framework 2 0 的类 该实例需要三种不同的输入类型 NodeList Str
  • 如何不在类中实现接口的功能?

    面试时面试官问了我以下问题 但我不知道这个问题的答案是什么 请帮忙 如果我不想 我必须做什么 在我的类中实现一个函数 在接口中声明为 由我班实施 Edited 我正在使用 NET 和 C 如果有人可以提供 C 示例代码示例 那就太好了 Th
  • Dynamics Crm:获取状态代码/状态代码映射的元数据

    在 Dynamics CRM 2011 中 在事件实体上 状态原因 选项集 也称为状态代码 与 状态 选项集 也称为状态代码 相关 例如看这个截图 当我使用 API 检索状态原因选项集时 如下所示 RetrieveAttributeRequ
  • 将 bignum 类型结构转换为人类可读字符串的有效方法是什么?

    我有一点问题 为了增长我的 C 知识 我决定尝试实现一个基本的 bigint 库 bigint 结构的核心将是一个 32 位整数数组 选择它们是因为它们适合寄存器 这将允许我在数字之间进行操作 这些操作将在 64 位整数中溢出 这也将适合寄
  • 你能解释一下这个C++删除问题吗?

    我有以下代码 std string F WideString ws GetMyWideString std string ret StringUtils ConvertWideStringToUTF8 ws ret return ret W
  • 如何强制执行特定的 UserControl 设计

    我正在编写一个基本用户控件 它将由一堆其他用户控件继承 我需要对所有这些后代控件强制执行某种设计 例如 顶部必须有几个按钮以及一个或两个标签 后代用户控件区域的其余部分可以自由放置任何内容 最初 我认为我可以将一个面板放到 Base Use
  • 正在获取“未终止 [] 设置”。 C# 中的错误

    我正在 C 中使用以下正则表达式 Regex find new Regex url
  • 如何从函数返回矩阵(二维数组)? (C)

    我创建了一个生成宾果板的函数 我想返回宾果板 正如我没想到的那样 它不起作用 这是函数 int generateBoard int board N M i j fillNum Boolean exists True initilize se

随机推荐

  • Android 不同分辨率的布局

    我希望为各种屏幕分辨率创建各种布局 例如hdpi xhdpi etc 我读了here关于我怎样才能做到这一点 所以我创建了两个目录layout xlarge and layout large in my res目录并放置xml那里的布局 我
  • 受密码保护的 UITextField 上的大写锁定图像

    我正在创建一个需要使用 USB 键盘的应用程序 普通触摸屏键盘已被禁用 不会显示 当用户第一次安装该应用程序时 他们需要创建一个四位数的 Pin 图 Pin 的输入字段受密码保护 每次输入新数字时都会出现点 Pin UITextField
  • 每周/每月查询的 SQL 请求,即使不存在记录

    我正在使用 MySQL 我很难获得每月的计数 包括没有记录的月份 这是我的表 Plays idplay idplayer day 1 26 17 11 2015 2 37 22 12 2015 3 65 24 04 2016 4 12 16
  • 在 PHP 中调整图像大小的智能方法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我想知道是否有人可以帮助我
  • 有这样的RTSP Ping吗?

    我目前正在开发一个 WinForm 应用程序 使用 C 中的 RTSP 协议从 IP 摄像机流式传输视频 一切都很好 该应用程序的部分要求包括检查网络摄像机是否在线的功能 因此 我使用 System Net NetworkInformati
  • 《Head First Design Patterns》一书中的接口与接口关联

    这本书首先设计模式将以下 UML 作为观察者模式的示例 这张图中让我印象深刻的是之间的关联关系Subject and Observer接口 据我了解Java接口 它们不能以这种方式实现 Has a 关系 当我查看几页后提供的实现示例时 我发
  • 如何在Python中对嵌套列表的外部和内部子列表进行排序?

    首先 如果这太天真 我深表歉意 我是初学者 我有以下类型的列表列表 我想首先按内部列表的最后一个成员按升序排序 data 1 45 0 2 49 2 3 98 0 4 82 1 5 77 1 6 98 2 我通过使用以下方法来实现此目的 s
  • 具有不同内容的跨路由的通用组件

    我有一个名为Header它存在于所有路线中 而应用程序的其余部分则发生变化 为了实现这一点 我的主要渲染代码如下所示 使用 ES6 render return div div
  • 如何检查用户是否登录

    我创建了一个登录页面 用户必须提供用户名和密码才能访问某些特定资源 他们可以在其中上传图像 或者只是编辑一些有关自己的描述 我的 web config 文件如下所示
  • php:获取ip地址

    我想获取访客的IP地址 你能告诉我什么元素吗 SERVER 我应该使用 SERVER HTTP CLIENT IP SERVER HTTP X FORWARDED FOR or SERVER REMOTE ADDR UPDATE 如果您的客
  • Xcode 4 中的这些图标代表什么?

    我以前从未见过这些 但是文件浏览器中文件名旁边的小 A 和 M 是做什么用的 让我根据SVN的知识猜测一下 A gt 新添加的文件 M gt 修改现有文件
  • 如何在 Titanium JS 中创建带有按钮的标题栏?

    我在用着钛合金构建一个应用程序 我尝试创建一个带有按钮的标题栏 类似于联系人应用程序 如下图所示 该标题的标题位于中间 按钮位于任一站点 我一直在到处寻找一种在钛中做到这一点的方法 但我还没有找到任何东西 文档中似乎没有这个内容 我需要创建
  • 如何在配置单元中保留驼峰式大小写的列名

    选择 12345 作为 EmpId 输出是 empid 值为 12345 有任何线索可以保持与 EmpId 相同的列名吗 不可能 这是 HIVE 元存储的限制 它以全小写形式存储表的模式 Hive 使用此方法来标准化列名称 请参阅表 jav
  • 内部访问修饰符与私有访问修饰符

    两者有什么区别internal and privateC 中的访问修饰符 internal适用于程序集范围 即只能从同一 exe 或 dll 中的代码访问 private适用于类范围 即只能从同一类中的代码访问
  • 为什么char数据的地址不显示?

    class Address int i char b string c public void showMap void void Address showMap void cout lt lt address of int lt lt i
  • 没有 Web 服务器的 Spring Boot

    我有一个简单的 Spring Boot 应用程序 它从 JMS 队列获取消息并将一些数据保存到日志文件中 但不需要 Web 服务器 有没有办法在没有Web服务器的情况下启动Spring Boot 春季启动 2 x 3 x 应用程序属性 sp
  • Laravel 4 不刷新

    我在 laravel 4 中遇到一个奇怪的问题 因为每次我尝试刷新页面时都不会出现更改 肯定不是浏览器的缓存 任何帮助表示赞赏 我遇到了同样的问题并找到了答案 尝试在 php ini 中禁用 OPcache 如果您使用MAMP 可以在 Ap
  • 隐藏已编译应用程序可执行代码的实践

    反编译和逆向工程 net 程序集是一种标准做法 我想发布一些将添加到现有应用程序的插件程序集 但我不希望它们被其他人使用 有哪些方法可以隐藏这些程序集的来源 除非控制目标硬件 否则理论上不可能实现 100 的保护 如果 CPU 能够执行它
  • 咖啡 | solver.prototxt值设置策略

    在 Caffe 上 我正在尝试实现一个用于语义分割的全卷积网络 我想知道是否有一个具体的策略来设置你的 solver prototxt 以下超参数的值 测试迭代器 测试间隔 迭代大小 max iter 这是否取决于您的训练集的图像数量 如果
  • c语言中绝对值的写法

    我知道该解决方案很丑陋并且在技术上不正确 但我不明白为什么代码不起作用 include