草庐IT

bit_integer_at_least

全部标签

c++ - uint8_t、uint_fast8_t 和 uint_least8_t 之间的区别

C99标准引入了以下数据类型。可以找到文档here用于AVRstdint库。uint8_t表示它是一个8位无符号类型。uint_fast8_t表示它是最快的无符号整数,至少为8位。uint_least8_t表示它是一个至少8位的无符号整数。我了解uint8_t和什么是uint_fast8_t(我不知道它是如何在寄存器级别实现的)。1.你能解释一下“它是一个至少有8位的unsignedint”是什么意思吗?2.uint_fast8_t和uint_least8_t与uint8_t相比如何帮助提高效率/代码空间? 最佳答案 uint_le

c++ - vector::at 与 vector::operator[]

我知道at()比[]慢因为它的边界检查,在类似的问题中也有讨论,如C++Vectorat/[]operatorspeed或::std::vector::at()vsoperator[].我只是不明白at()是什么方法很好。如果我有一个像这样的简单vector:std::vectorv(10);我决定使用at()访问它的元素而不是[]在我有索引i的情况下而且我不确定它是否在vector范围内,它迫使我用try-catchblock包装它:try{v.at(i)=2;}catch(std::out_of_range&oor){...}虽然我可以通过使用size()来获得相同的行为并自己检查

c++ integer->std::string 转换。简单的功能?

问题:我有一个整数;这个整数需要转换为STL::string类型。过去,我使用stringstream进行转换,这有点麻烦。我知道C方法是执行sprintf,但我更愿意执行类型安全的C++方法。有没有更好的方法来做到这一点?这是我过去使用的字符串流方法:std::stringintToString(inti){std::stringstreamss;std::strings;ss当然,这可以改写成这样:templatestd::stringt_to_string(Ti){std::stringstreamss;std::strings;ss但是,我认为这是一个相当“重量级”的实现。Za

c++ - C/C++ : Force Bit Field Order and Alignment

我读到结构中位字段的顺序是特定于平台的。如果我使用不同的特定于编译器的打包选项,这会保证数据在写入时以正确的顺序存储吗?例如:structMessage{unsignedintversion:3;unsignedinttype:1;unsignedintid:5;unsignedintdata:6;}__attribute__((__packed__));在带有GCC编译器的英特尔处理器上,这些字段在内存中布局,如图所示。Message.version是缓冲区中的前3位,然后是Message.type。如果我找到各种编译器的等效结构打包选项,这会是跨平台的吗?

c++ - #include <bits/stdc++.h> 如何在 C++ 中工作?

这个问题在这里已经有了答案:WhyshouldInot#include?(9个回答)关闭4年前。我读过codeforces如果我们添加#include的博客在C++程序则无需包含任何其他头文件。#include如何工作,是否可以使用它而不是包含单个头文件? 最佳答案 它基本上是一个头文件,还包括每个标准库和STL包含文件。我能看到的唯一目的是测试和教育。参见例如GCC4.8.0/bits/stdc++.hsource.使用它会包含很多不必要的东西并增加编译时间。编辑:正如Neil所说,它是预编译头文件的实现。如果您正确设置它以进行预

iphone - 如何删除警告 "Frame for Button will be different at run time."

我正在使用Xcode5开发者预览版。当我从界面生成器中更改或添加XIB文件时,Xcode显示此警告:FrameforButtonwillbedifferentatruntime.如何删除此警告? 最佳答案 当元素在Storyboard中的实际位置与运行应用程序时不同时,会显示此警告。您可以选择该元素,然后点击Option+Cmd+=。这将更新元素在Storyboard中的位置,并且该警告将消失。您也可以在Editor>ResolveAutoLayoutIssues>UpdateFrames下的菜单中找到此选项。

ios - 在 32 位和 64 位架构上格式化 NS(U)Integer 时类型转换的替代方法?

对于64位版本的iOS,我们不能再使用%d和%u来格式化NSInteger和NSUInteger。因为对于64位,这些类型定义为long和unsignedlong而不是int和unsignedint。因此,如果您尝试使用%d格式化NSInteger,Xcode会抛出警告。Xcode对我们很好,它提供了这两种情况的替代品,它包括一个以l为前缀的格式说明符和一个类型转换为long。那么我们的代码基本上是这样的:NSLog(@"%ld",(long)i);NSLog(@"%lu",(unsignedlong)u);如果你问我,那是眼睛疼。几天前,有人在Twitter上提到了格式说明符%zd来

C++ : why bool is 8 bits long?

在C++中,我想知道为什么bool类型是8位长(在我的系统上),而只有一位就足以容纳boolean值?我以前认为这是出于性能原因,但是在32位或64位机器上,寄存器为32或64位宽,性能优势是什么?或者这只是这些“历史”原因之一? 最佳答案 因为每个C++数据类型都必须是可寻址的。如何创建指向单个位的指针?你不能。但是您可以创建一个指向字节的指针。所以C++中的boolean值通常是字节大小的。(它也可能更大。这取决于实现。主要是它必须是可寻址的,因此任何C++数据类型都不能小于一个字节)

c++ - "No newline at end of file"编译器警告

在某些C++编译器中出现以下警告的原因是什么?Nonewlineatendoffile为什么我应该在源文件/头文件的末尾有一个空行? 最佳答案 想想如果没有换行符可能会出现的一些问题。根据ANSI标准#include开头的文件将文件完全按原样插入到文件的前面,并且不在#include之后插入新行。在文件内容之后。因此,如果您在解析器的末尾包含一个没有换行符的文件,它将被视为foo.h的最后一行。与foo.cpp的第一行在同一行.如果foo.h的最后一行是没有新行的注释怎么办?现在foo.cpp的第一行被注释掉了。这些只是可能出现的问

c++ - 为什么我不应该#include <bits/stdc++.h>?

我用我的代码发布了一个问题,其唯一的#include指令如下:#include我的老师告诉我这样做,但在评论部分我被告知我不应该这样做。为什么? 最佳答案 包括在StackOverflow上似乎越来越常见,也许是本学年新添加到国家类(class)中的内容。我想这些优势是这样模糊地给出的:你只需要写一个#include行。您无需查找所有内容都在哪个标准标题中。不幸的是,这是一个懒惰的hack,直接命名GCC内部header而不是像这样的单个标准header,和.它破坏了便携性并养成了糟糕的习惯。缺点包括:它可能只适用于那个编译器。你不