c++ - 为什么 "greater than"不适用于 char 类型?

标签 c++

我正在 OTB(一个 C++ 库)中实现一个图像处理过滤器。

我在进行一些非常基本的测试时出现了奇怪的行为。当我将图像读取为“char”时,以下代码始终输出像素值(在 0-200 范围内),即使它大于 150。但是,当我使用“short int”时它工作正常。 “char”是否有特殊行为(例如字母比较而不是其数值)或者是否有任何其他原因?

当然,我的图像像素是以字节存储的,所以我更喜欢处理“char”而不是“int”,因为图像非常大(> 10 Gb)。

if (pixelvalue > 150)
{
out = 255;
}
else
{
out = pixelvalue;
}

最佳答案

unsigned char 运行到(至少)255,但 char 可以签名并限制为 127。

关于c++ - 为什么 "greater than"不适用于 char 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35771004/

相关文章:

c++ - 将 ‘double*’ 转换为 ‘boost::any*’

c++ - Q_DECLARE_METATYPE 抛出缺少类型说明符错误

c++ - 将 cout 输出到 std::string

c++ - basic_streambuf::seekoff 当 ios_base::in | 应该返回什么? ios_base::out 被指定了吗?

c++ - 简单命令行程序中的段错误

c++ - function2的时间复杂度是多少?

c++ - 嵌套模板类构造函数

c++ - 如何在 C++ 中创建静态全局类? (或者我应该以不同的方式这样做吗?)

c++ - 玩家移动和碰撞之间的交互问题

c++ - 我什么时候需要使用 std::async(std::launch::async, func()) 而不是 func()?