如果存在,是否包含头文件?
这段代码给出了编译错误:
#include <iostream>
using namespace std;
int main()
{
byte b = 2;
cout << b << endl;
return 0;
}
如果存在,是否包含头文件?
这段代码给出了编译错误:
#include <iostream>
using namespace std;
int main()
{
byte b = 2;
cout << b << endl;
return 0;
}
char 是一个字节。只是一个字节不一定是8位。
CHAR_BIT。我已经研究了多个嵌入式系统,其中字节的长度不是8位。一个char的大小定义为1,因此,是的,char始终是一个字节。
char,这是至少8位。在其他情况下,术语“字节”的定义可能有所不同,但是在讨论C或C ++时,最好遵循标准的定义。
using byte = unsigned char并完成它(如rmp的答案所示)?
Answers:
不,C ++中没有字节数据类型。但是,您始终可以包括标准库中的bitset标头,并为字节创建一个typedef:
typedef bitset<8> BYTE;
注意:鉴于WinDef.h为Windows代码定义了BYTE,因此如果您打算以Windows为目标,则可能要使用BYTE以外的其他名称。
编辑:针对答案错误的建议。答案没有错。问题是“ C ++中是否有'byte'数据类型?”。答案过去是:“没有C ++中没有字节数据类型”。
关于被问到的建议替代方案,为什么建议的替代方案更好?
根据我的C ++标准副本,当时:
“声明为字符(char)的对象应足够大以存储实现基本字符集的任何成员”:3.9.1.1
我读到这是建议,如果编译器实现需要16位来存储基本字符集的成员,则char的大小将为16位。当今的编译器倾向于将8位用于一个char是一回事,但据我所知,当然不能保证它将是8位。
另一方面,“类模板bitset <N>描述了可以存储由固定位数N组成的序列的对象”。:20.5.1。换句话说,通过指定8作为模板参数,我得到一个对象,该对象可以存储由8位组成的序列。
据我所知,尽管我可能是错的,但就编写的程序而言,替代方法是否优于char取决于我当时的编译器和要求。因此,就我个人而言,取决于编写代码的个人来确定建议的替代方案是否适合他们的要求/需求/需求。
bitset<8>好过unsigned char?
std::byte
BIT_CHAR。这是一个谜。宇宙之谜..
不,byte在C ++中没有称为“ ”的类型。你想,而不是什么unsigned char(或者,如果您需要的8位,uint8_t距离<cstdint>,因为C ++ 11)。请注意,这char不一定是准确的替代方法,因为它对signed char某些编译器和unsigned char其他编译器都意味着。
char,signed char和unsigned char是三种不同的类型。char具有与其他两个之一相同的表示。
unsigned char大于8位,则uint8_t不会定义。
<stdint.h>而不是<cstdint>。
std::byte无法对其执行算术运算,这可能会破坏交易。
std::byte只是一个另外一个可以选择的合适的工具(即要么std::byte,char,unsigned char或uint_8)。
typedef unsigned char byte;or更好typedef std::uint8_t byte;?
char*,unsigned char*或std::byte*。
std::byte无法对其执行运算,否则可能会破坏交易。
否,但是自C ++ 11起就有[u] int8_t。
char。