gpt4 book ai didi

c++ - C++ 中 signed char 负值的计算

转载 作者:太空狗 更新时间:2023-10-29 20:02:00 33 4
gpt4 key购买 nike

C++ 如何处理 signed char 的负值?行为是否在 C++11 标准中定义?我正在使用 MinGW C++ 11 编译器。看起来有符号值通过添加 256 转换为无符号类型,然后打印扩展 ASCII 字符。

signed char a=-35;
std::cout<<a;

最佳答案

根据 this ,选择以下重载:

template< class Traits >
basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,
signed char ch );

因为 signed char 不是 chara 首先使用 widen 转换为 char :

char_type widen( char c ) const;

所以你的代码等同于:

std::cout << std::cout.widen(c);
// or:
std::cout << std::use_facet< std::ctype<char> >(getloc()).widen(c)

如您所见,widen 接受一个char,因此您将进行从signed charchar< 的转换 在实际“扩大”之前。

即使您从 char 扩展到 char,行为也是实现定义的——标准对此不做任何保证。

关于c++ - C++ 中 signed char 负值的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48275998/

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