标题可能是错误的选择,但我找不到这个问题的好的一行摘要.我的问题是我无法弄清楚我的编译器在做什么,我想知道我是否在编译器中发现了一个错误......或者我对C语言的理解.

我的理解是:

- 1UL == ULONG_MAX这是安全的,因为无符号数的溢出行为已被很好地定义

该产品(- 1UL) * 1.0f涉及将左操作数转换为float,并且此转换保留ULONG_MAX除了舍入错误之外的值(即)

到目前为止,我的编译器同意,除非1UL来自变量.这是我的测试程序,其输出为注释:

#include

int main(void)

{

unsigned long one = 1;

unsigned long minus_one = - one;

printf("%lu\n", - one); // 18446744073709551615

printf("%g\n", minus_one * 1.0f); // 1.84467e+19

printf("%g\n", (- one) * 1.0); // 1.84467e+19

printf("%g\n", (- 1UL) * 1.0f); // 1.84467e+19

printf("%g\n", (- one) * 1.0f); // -1

return 0;

}

我无法理解最后的输出.我尝试了各种优化级别和各种语言标准(C90,C99和C11),结果相同.谁有线索?

环境:gcc 4.8.1/Ubuntu Linux 14.04/x86-64(I32LP64)

编辑:我刚刚注意到我的问题可能是一元减号和浮点数转换组合的重复.

c语言整形数乘以负数,当乘以浮点数时,无符号长整数可以变为负数吗?相关推荐

  1. c语言 char memcpy,在C中使用memcpy复制无符号字符数组

    int n=50; 假设你在32位机器上,'n'将是一个4字节的值. N = 0x00000032 = 00000000B 00000000B 00000000B 00110010b unsigned ...

  2. 关于无符号相减得负数的问题

    刚看c++Primer,关于无符号数计算问题. #include <iostream> using namespace std; int main () {unsigned u=10,u2 ...

  3. 3倍根号x加1分之一c语言,用C语言将一个数开根号后再取倒数的方法

    在上学的时候,曾经看过有人写过这样的算法,就是将一个数开根号后再取倒数的算法,我本人也觉得十分巧妙,于是就将它积累了下来,让我们来看看是怎么回事: #include #include float my ...

  4. c语言整形符号位_C语言中整型无符号二进制数的表示问题

    龙源期刊网 http://www.qikan.com.cn C 语言中整型无符号二进制数的表示问题 作者:马红旭 来源:<电子技术与软件工程> 2015 年第 20 期 摘 要 文章解决的 ...

  5. c语言指针倒数之和,用C语言将一个数开根号后再取倒数的方法

    在上学的时候,曾经看过有人写过这样的算法,就是将一个数开根号后再取倒数的算法,我本人也觉得十分巧妙,于是就将它积累了下来,让我们来看看是怎么回事: #include #include float my ...

  6. C语言中有符号与无符号

    --事物的难度远远低于对事物的恐惧! 经过养成记1,已经有一个很好的开端,但革命尚未成功,坚持就是胜利!现在我们来分析下C语言中的有符号数与无符号数.我们知道,计算机只能识别二进制0和1,那么我们在程 ...

  7. C++中含有无符号类型的表达式——有符号数与无符号数相加

    首先,明确一个概念,什么是有符号数,什么是无符号数.以整型为例,int 类型的既可以表示正整数,又可以表示负整数,所以是有符号数.unsigned  int 只可以表示正整数,所以成类似的数为无符号数 ...

  8. 【c++】无符号类型与负数的比较

    [c++]无符号类型与负数的比较 博主在学习中,发现这样一个问题: #include<iostream> using namespace std;int main() {unsigned ...

  9. c语言二进制加法_“整形数”还真没那么简单(C语言版)

    来自公众号:最后一个bug 1.整形的存储 1)说说数据的存储 数据对于存储器而言都是二进制的0101...,也就是我们所说的机器码.而我们所定义的类型就相当于确定了这块内存占据多大的位置和以怎么这样 ...

最新文章

  1. php验证旧密码,PHP验证数据库密码问题
  2. 从Java 10中删除的API
  3. BZOJ2115XOR——线性基
  4. 漫步最优化三十七——共轭梯度法
  5. 浅析.Net 在 winform及wpf中涉及界面交互的多线程类的封装
  6. 开发 系统键盘发送按钮不可点击_HoloLens开发指南(2)---HoloLens模拟器介绍
  7. 【linux】修改某一行
  8. [WP8] Binding时,依照DataType来选择DataTemplate
  9. @Resource和@Autowired小笔记
  10. 技术人 | 如何做一个明白状况的研发主管?
  11. 锐捷认证成功但是无法上网的问题
  12. 上汽拿下国内首张道路测试用牌照
  13. JAVA常用工具类汇总
  14. javaweb调用python修改微信运动步数,使用小米运动接口
  15. JAVA计算机毕业设计大学校园兼职网站Mybatis+系统+数据库+调试部署
  16. A类计算机机房温度变化,夏季什么样的温度才是机房适合的?
  17. 学术新秀采访-陆品燕~How To Get Your SIGGRAPH Paper Rejected
  18. 谈谈Android里的Context的使用!!!
  19. 浙江大学计算机学院 潘刚,潘刚 - 江苏科技大学 - 生物技术学院
  20. linux中ret2libc入门与实践

热门文章

  1. 深度报告:2020年债市复盘与历次牛熊拐点分析(20210110).PDF
  2. 积极推动上市银行 进入交易所债市
  3. 虚幻4 python_技术前瞻:虚幻引擎中的 Python
  4. win10专业版-开机自动连接宽带
  5. CAD双击打开图纸显示空白解决方案
  6. 商务邮箱e-mail地址格式是什么意思?解读mail使用场景及功能
  7. 车联网--车路协统技术
  8. 解决ValueError: Iterable over raw text documents expected, string object received.
  9. Python爬虫 爬取雪球网部分数据
  10. 【过关斩将】专栏改名为【运维面试秘籍】公告