前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言中负数做运算你会了吗

C语言中负数做运算你会了吗

作者头像
Linux兵工厂
发布2023-02-28 13:04:22
2K0
发布2023-02-28 13:04:22
举报
文章被收录于专栏:Linux兵工厂

先抛出问题,你觉得下面的代码会输出什么样的结果?

代码语言:javascript
复制
/*  一个简单的示例代码 */
#include <stdio.h>


int main(int argc, char const *argv[])
{
    int a = -10;
    int b = 10;
    int c = -3;
    int d = 3;

    printf("结果1: %d\n", a%d);
    printf("结果2: %d\n", b%c);
    printf("结果3: %d\n", a%c);

    printf("结果4: %d\n", a/d);
    printf("结果5: %d\n", b/c);
    printf("结果6: %d\n", a/c);

    return 0;
}
  • 昨天在公司帮一个小同事在查找问题,同事描述在做一个简单的功能是输入一组数据做算数运算,包括加减乘除。但是在做除法运算时,输出的结果有时是对的,有时是不对的。让我帮他查一下是什么原因导致。
  • 首先,查看了他定义的变量类型为int类型,没有问题。但现象是结果有时对,有时不对。发现在输入负数时结果会出问题,这么一来大概就知道问题出在什么地方了。
  • 先来看一下上面示例代码的输出的结果,有没有和你想的一样?

C语言中的负数取余取整规则

  • 我们先来考虑一下,为什么上面示例代码的在取余和取整时符号不同呢,这就涉及到C语言中负数参与除法时符号的问题。

C 语言中负数做除法的时候,商是令其与分母相乘的积的绝对值不超过分子的绝对值且最接近的那个数。

  • 取余时,余数与被除数(即分子的符号)相同
  • 取整时,先将各个带符号的数全部取正值再做除法,再根据负号的个数确定商的符号

总结

这个问题在C语言中看似简单,但是往往不注意也可能会引起大问题。如果这个对你有一点点帮助,那么就是值得的。

好文推荐

Linux shell编程常用方法总结

C++基础知识精髓

Linux下AutoMake创建工程流程

Qt5.7.1添加支持openssl

zynq平台移植python3.10.5

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Linux兵工厂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • C语言中的负数取余取整规则
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档