相关疑难解决方法(0)

内置类型的性能:char vs short vs int vs. float vs. double

这可能看起来有点愚蠢但是看到Alexandre C 在其他主题中的回复,我很想知道如果内置类型有任何性能差异:

charVS shortVS int主场迎战float 主场迎战double.

通常我们在现实生活中没有考虑这种性能差异(如果有的话),但我想知道这是出于教育目的.可以问的一般问题是:

  • 整数算术和浮点运算之间是否有任何性能差异?

  • 哪个更快?更快的原因是什么?请解释一下.

c c++ performance built-in

64
推荐指数
4
解决办法
3万
查看次数

隐式类型促销规则

本文旨在用作关于C中隐式整数提升的常见问题解答,特别是由通常的算术转换和/或整数提升引起的隐式提升.

示例1)
为什么这会给出一个奇怪的大整数而不是255?

unsigned char x = 0;
unsigned char y = 1;
printf("%u\n", x - y); 
Run Code Online (Sandbox Code Playgroud)

例2)
为什么这会给"-1大于0"?

unsigned int a = 1;
signed int b = -2;
if(a + b > 0)
  puts("-1 is larger than 0");
Run Code Online (Sandbox Code Playgroud)

示例3)
为什么更改上例中的类型来short解决问题?

unsigned short a = 1;
signed short b = -2;
if(a + b > 0)
  puts("-1 is larger than 0"); // will not print
Run Code Online (Sandbox Code Playgroud)

(这些示例适用于16位或短16位的32位或64位计算机.)

c type-conversion implicit-conversion

50
推荐指数
2
解决办法
7417
查看次数

"char"和"small int"比"int"慢吗?

可能重复:
内置类型的性能:char vs short vs int vs. float vs. double

你好.假设您有32位处理器.8位char和16位short int类型比原生32位慢int吗?那么使用64位long long int呢?

默认情况下硬件是否支持此数据类型,或者通过使用其他指令将它们全部转换为32位数据?

如果我必须存储少量的字符,将它们存储为整数是不是更快?

c c++ compiler-construction processor

8
推荐指数
1
解决办法
7959
查看次数

为什么两个无符号整数之和的结果类型在 Clang 和 GCC 中不同

我正在为我的模拟器编写一些低级代码,其中涉及大量 16 位和 8 位无符号整数。我-Wconversion在项目中启用了警告,所有警告都被视为错误 ( -Werror)。

考虑这个代码片段:

#include <cstdint>

int main ()
{
    uint16_t a = 4;
    uint16_t b = 6;
    uint16_t c = a + b;
}
Run Code Online (Sandbox Code Playgroud)

直到 GCC 9.3 使用-std=c++17 -Wconversion -Werroras 编译标志,出现以下错误:

<source>: In function 'int main()':
<source>:7:20: error: conversion from 'int' to 'uint16_t' {aka 'short unsigned int'} may change value [-Werror=conversion]
    7 |     uint16_t c = a + b;

      |                  ~~^~~
Run Code Online (Sandbox Code Playgroud)

但对于和 的任何编译器版本(测试直到),相同的代码不会给出此错误链接到编译器资源管理器。GCC 10.1Clang …

c++ gcc clang compiler-warnings

1
推荐指数
1
解决办法
982
查看次数