type-promotion相关内容

用于检查整数溢出的编译器标志

在下面的程序中,如果算术表达式出现问题,我们如何让编译器发出警告/错误。 如果算术表达式产生的值超过其类型的最大值,我希望编译器发出警告/错误。 我用gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4)编译了下面的程序,使用的编译命令是gcc int_promo_flags.c -Wall -Wextra 我期待来自第long long int y ..

ISO_FORTRAN_ENV 或 -fdefault-real-8 将实数提升为双精度

我一直在使用 gfortran 的 -fdefault-real-8 选项来自动提升在程序到双精度,连同任何常数,例如 1.23.如果我想切换回单精度,我只需要删除该选项并重新编译,而无需更改源代码中的单个字符. 我开始使用 ISO_FORTRAN_ENV 模块,因为它允许我使用 INPUT|OUTPUT|ERROR_UNIT 等常量,以及 IOSTAT_END 和 IOSTAT_EOR 和 ..
发布时间:2022-01-14 10:08:57 其他开发

由于java语言规则或jvm,添加字节转换为int?

字节 a = 1;字节 b = 1;字节 c = a + b; 抛出错误:可能损失精度 byte subt = a_s - a_b;^必需:字节发现:int 这种行为是否与 jvm 有关或它是用 java 语言定义的. 编辑:如果它是用 java 语言定义的,那么是因为要记住 jvm 吗? 意味着,如果Java支持的字节数据类型,那么为什么上字节操作结果 INT 解决方案 ..
发布时间:2022-01-12 23:36:28 Java开发

添加字节是因为java语言规则还是因为jvm?

byte a = 1;字节 b = 1;字节 c = a + b; 抛出错误:可能损失精度 byte subt = a_s - a_b;^要求:字节找到:int 这种行为是否与jvm有关,还是用java语言定义的. 编辑:如果它是用 java 语言定义的,那么是因为记住 jvm 吗? 表示如果java支持byte数据类型,那么为什么操作字节结果int 解决方案 如果j ..
发布时间:2021-11-25 20:07:14 Java开发

用整数计算浮点数的标准化方法是什么?

你们有谁知道这将如何在 C 中计算? uint8_t 采样率 = 200;uint8_t 结果;结果 = 0.5 * 采样率; 现在,问题是 0.5 是一个浮点数,而 samplerate 是一个整数.Result 然后可以是 0,因为 0.5 被转换为整数,因此四舍五入为 0(Result = 0 * 200 = 0).或者 Result 可能是 100,因为编译器首先看到 0.5 并将 s ..
发布时间:2021-09-11 19:40:08 其他开发

惯用C ++ 11类型提升

有关于C ++的科学计算方面的出色论文,其中作者(T. Veldhuizen )建议使用一种基于特征的方法来提升类型.我已经使用了这种方法,并发现它是有效的: #include #include #include template struct promote_trait{}; ..
发布时间:2020-07-26 02:29:48 C/C++开发

float变量如何自动提升为double类型?

我知道在C和Java中,float的基本表示形式是IEEE754-32,double是IEEE754-64. 在表达式中,float将自动提升为double.又怎样? 以3.7f为例.这样的过程吗? 3.7f将使用IEEE754在内存中表示.它可以容纳4个字节. 在计算期间,可以将其加载到64位寄存器(或任何64位位置)中,从而将3.7f转换为IEEE754-64表示. 解决方 ..
发布时间:2020-07-26 02:29:44 其他开发

ISO_FORTRAN_ENV或-fdefault-real-8将实数提升为双精度

我一直使用gfortran的-fdefault-real-8选项自动将程序中任何地方声明的每个REAL提升为双精度,以及任何常量,例如 1.23.如果我想切换回单精度,则只需删除该选项并重新编译,而无需在源代码中更改单个字符. 我开始使用ISO_FORTRAN_ENV模块,因为它允许我使用INPUT|OUTPUT|ERROR_UNIT以及IOSTAT_END和IOSTAT_EOR等常量(这似 ..
发布时间:2020-07-26 02:29:40 其他开发

为什么在计算表达式时将字节和短值提升为int

我想知道为什么每次对表达式求值或按位运算时将byte和short值提升为int的原因吗? 解决方案 因为Java语言规范是这样说的. 第5.6.1节定义了一元数值提升以用于某些运算符的撤消,它说: 如果操作数的编译时类型为byte,short或char,则通过扩展原语转换(第5.1.2节)将其提升为int类型的值. 第5.6.2节在评估二进制数值运算符("binary"表示具有 ..
发布时间:2020-06-26 21:37:18 Java开发

可交换数学运算的顺序

我遇到了一个奇怪的问题(在阅读粗略的代码时自己问).让我们看一下表达式: double a = c*d*e*2/3*f; 其中c,d,e,f是类型为double的初始化变量.标准是否保证将其视为c*d*e*2(双重结果),然后除以3,再乘以f(或某些类似行为).显然,不希望将2/3计算为0. 标准的哪个段落对此进行了定义? 解决方案 基于 [简介]-注释7 (非规范性内容 ..
发布时间:2020-04-27 04:23:55 C/C++开发

数据促销语法

我最近在 Data.Promotion “>单身的。它具有类型族的负载,允许在类型级别进行基本上任意的计算。我有几个使用问题: ($) , (%$) , ($$) ,它们是否与:++有关$ ,:。$ ,等等?这些实际上是中缀操作员吗?我在印象之下所有中缀型构造函数都必须以:。 我试图将一个构造函数映射到列表上: { - #LANGUAGE DataKinds,TypeOpera ..
发布时间:2018-06-05 11:01:58 其他开发

是无符号的字符总是提升为int?

假设如下: unsigned char型富= 3; unsigned char型吧= 5;unsigned int类型SHMOO = foo的酒吧+; 是富和栏保证晋升为 INT 值富+酒吧 - 或者实现允许以促进它们无符号整型? 在部分6.2.5 第8段: 对于任何两个整数类型具有相同的符号性和不同的整数转换等级 (见6.3.1.1),以较小的整数转换等级的类型值的范围是 ..
发布时间:2016-08-23 10:06:02 C/C++