相关疑难解决方法(0)

"POSIX"是什么意思?

什么是POSIX?我已阅读维基百科的文章,每次遇到这个词时我都会阅读它.事实是,我从来没有真正理解它是什么.

任何人都可以通过解释"对POSIX的需求"向我解释一下吗?

unix linux posix terminology

822
推荐指数
8
解决办法
29万
查看次数

uint8_t vs unsigned char

在C 中使用uint8_tover有什么好处unsigned char

我知道几乎每个系统uint8_t都只是一个typedef unsigned char,为什么要用呢?

c typedef

218
推荐指数
6
解决办法
28万
查看次数

标准委员会关心的异域架构

我知道C和C++标准留下了语言实现的许多方面 - 仅仅因为如果存在具有其他特征的体系结构,那么为它编写符合标准的编译器是非常困难或不可能的.

我知道40年前任何电脑都有自己独特的规格.但是,我不知道今天使用的任何架构:

  • CHAR_BIT != 8
  • signed 不是两个补充(我听说Java有这个问题).
  • 浮点不符合IEEE 754(编辑:我的意思是"不是IEEE 754二进制编码").

我问的原因是我经常向人们解释C++不强制要求任何其他低级方面如固定大小的类型.这很好,因为与其他语言不同,它使你的代码在正确使用时可以移植(编辑:因为它可以移植到更多架构而不需要模拟机器的低级方面,例如符号+幅度架构上的二进制补码算法) .但我感到很难过,我自己也无法指出任何特定的架构.

所以问题是:哪些架构具有上述属性?

uint*_ts是可选的.

c c++ architecture

149
推荐指数
7
解决办法
1万
查看次数

使用(或不使用)stdint的原因

我已经知道stdint用于当你需要特定的变量大小来实现平台之间的可移植性时,我现在还没有真正有这样的问题,但除了已经在上面显示的事实之外,使用它的缺点和优点是什么?

在stackoverflow和其他网站上寻找它,我找到了2个关于主题的链接:

  • 1 - 这个讨论了stdint的可移植性.

  • 2 - 这个更具体的关于uint8_t.

这两个链接非常好,特别是要了解更多关于这个标题的可移植性的主要原因,但对我来说,我最喜欢它,我认为uint8_t比unsigned char更清洁(例如存储RBG通道值) ,int32_t看起来比简单的int等更有意义.

所以,我的问题是,究竟是什么缺点,特别是除了可移植性之外使用stdint的优点,我应该只在代码的某些特定部分使用它,还是在任何地方?如果到处都是,我怎样才能使用atoi,strtok等功能呢?

谢谢!

c char stdint

46
推荐指数
4
解决办法
2万
查看次数

是否有理由在跨平台代码中使用C++ 11的std :: int_fast32_t或std :: int_fast16_t over int?

在C++ 11中,我们提供了固定宽度的整数类型,例如std::int32_tstd::int64_t,它们是可选的,因此不是编写跨平台代码的最佳选择.然而,我们也得到了各类非可选变型:例如"快"的变体,如std::int_fast32_tstd::int_fast64_t,以及"最小尺寸"变体,例如std::int_least32_t,它都至少指定数目的大小位.

我正在处理的代码是基于C++ 11的跨平台库的一部分,它支持在最流行的Unix/Windows/Mac编译器上进行编译.现在出现的一个问题是,如果用C++ 11固定宽度整数类型替换代码中的现有整数类型是否有优势.

使用类似变量的缺点std::int16_tstd::int32_t是缺乏保证它们是可用的,因为只提供他们如果实现直接支持的类型(根据http://en.cppreference.com/w/cpp/types/integer).

但是,因为int至少16位且16位对于代码中使用的整数足够大,所以使用std::int_fast16_tover int呢?它提供了一个好处,以取代所有int类型的std::int_fast16_t,所有unsigned int通过的std::uint_fast16_t那样,或者这是不必要的?

Anologously,如果知道所有支持的平台和编译器配备了int至少32位的大小,是否有意义通过替换他们std::int_fast32_tstd::uint_fast32_t分别?

c++ std c++11

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

可以在C++中以整数类型存储的最大值

我在C++中有以下程序

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <limits>
using namespace std;

int main()
{
    printf("range of int: %d to %d", SHRT_MIN, SHRT_MAX);
    int a = 1000006;
    printf("\n Integer a is equal to %d", a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 如何a存储大于MAX限制的整数?

c++ int

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

标签 统计

c ×3

c++ ×3

architecture ×1

c++11 ×1

char ×1

int ×1

linux ×1

posix ×1

std ×1

stdint ×1

terminology ×1

typedef ×1

unix ×1