小编Ada*_*aun的帖子

在带有或不带命名空间的<cstdint>中使用类型

在C++ 11中,我可以选择是否要使用带或不带命名空间std ::中定义的类型

至少我的编译器(g ++ 4.7)接受这两种变体.

我的问题是:使用cstdint中的typedef的推荐方法是什么.有没有命名空间?有什么优点或缺点?或者只是风格问题?

所以变种a):

#include <cstdint>
std::uint8_t n = 21;
Run Code Online (Sandbox Code Playgroud)

RESP:

#include <cstdint>
using std::uint8_t;
uint8_t n = 21;
Run Code Online (Sandbox Code Playgroud)

或变体b):

#include <cstdint>
uint8_t n = 21;
Run Code Online (Sandbox Code Playgroud)

c++ stl c++11

10
推荐指数
2
解决办法
2391
查看次数

在python中从stdin读取无缓冲的

我正在编写一个python脚本,可以通过管道从另一个命令中读取输入

batch_job | myparser
Run Code Online (Sandbox Code Playgroud)

我的脚本myparser处理输出batch_job并写入自己的标准输出.我的问题是我想立即看到输出(batch_job的输出是逐行处理的)但似乎有这个臭名昭着的stdin缓冲(据称是4KB,我还没有验证)延迟了一切.

这个问题已经讨论已经在这里 这里这里.

我尝试了以下方法:

  • 打开stdin使用 os.fdopen(sys.stdin.fileno(), 'r', 0)
  • 使用-u在我hashbang:#!/usr/bin/python -u
  • export PYTHONUNBUFFERED=1在调用脚本之前进行设置
  • 在读取的每一行之后刷新我的输出(以防问题来自输出缓冲而不是输入缓冲)

我的python版本是2.4.3 - 我没有可能升级或安装任何其他程序或包.我怎样才能摆脱这些延误?

python stdin unbuffered

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

为什么高精度浮点格式具有这么多指数位?

我一直在研究IEEE 754x87浮点格式。总结如下:

                Total       Bits per field
Precision       Bits    Sign  Exponent  Mantissa
Single          32      1     8         23  (+1 implicit)   
Double          64      1     11        52  (+1 implicit)
Extended (x87)  80      1     15        64
Quadruple       128     1     15        112 (+1 implicit) 
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么高精度格式有这么多指数位?单精度可为您提供约10 ^ 38的最大值,我可以看到在极端情况下(宇宙中的原子数)您可能需要更大的指数。但是双精度达到〜10 ^ 308,而扩展精度和四精度具有更多的指数位。这似乎比实际的硬件加速计算所必需的要大得多。(负指数甚至更荒谬!)

话虽如此,尾数位显然很有价值,以至于我认为必须有充分的理由牺牲尾数以支持指数。那是什么 我认为这可能是为了表示两个相邻值之间的差异而无需使用次法线,但是即使这样,指数也不会发生太大变化(在+1023到-1022的整个范围内为-6为两倍)。

floating-point

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

标签 统计

c++ ×1

c++11 ×1

floating-point ×1

python ×1

stdin ×1

stl ×1

unbuffered ×1