gpt4 book ai didi

c++ - 固定宽度整数类型 std::uint8_t 和 std::int8_t 的实现,C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:12:55 33 4
gpt4 key购买 nike

我正在使用固定宽度的整数类型 std::int8_tstd::uint8_t从 C++11 开始就包含在 C++ 中(标题 <cstdint> )。我使用 gcc 编译器进行 C++ 编程(Linux,gcc --version 4.8.2)。

在我的机器上

#include <cstdint>
#include <type_traits>

//...

std::cout << std::is_same<std::uint8_t,unsigned char>::value << std::endl;
std::cout << std::is_same<std::int8_t,char>::value << std::endl;

给出输出

1
0

换句话说:std::uint8_t实现为 unsigned char但是std::int8_t 没有实现为char !我不知道(合理的)怎么会是std::int8_t未实现为 char .问题:如何解释这个结果?

最佳答案

可能他们使用了 signed char,这是明智的,因为编译器选项(在 gcc -fsigned-char-funsigned-char 中)可以更改普通 char 的符号。

注意 char, signed char and unsigned char are guaranteed to be distinct types ,因此很正常,即使在您的编译器上 char 已签名,它也不会被视为与 signed char 相同。

Is the difference between char and signed char only formal?

没有; char 可以有符号或无符号,具体取决于编译器和编译器选项; signed char 总是有符号的,无论如何。

(现在,如果你问我,普通的 char 应该总是 unsigned,但这只是我的意见)

关于c++ - 固定宽度整数类型 std::uint8_t 和 std::int8_t 的实现,C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25230307/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com