(BYTE)-1是什么意思?
what does it mean by (BYTE)-1
我在读别人的代码:
#define CPUTYPE_INVALID ((BYTE)-1)
那是什么意思?我想它的效果和下面一样,
#define CPUTYPE_INVALID 255
如果我们已经有
typedef unsigned char BYTE; (in windef.h)
(下面假设BYTE是一种类型,因为它是在windef.h中编写的)
假设BYTE
= char
,这将产生-1
,因为它将-1
(整数)转换为char
。它只是对-1的c风格强制转换。
这是在系统定义的BYTE
类型中获得"-1"的一种方式,无论是有符号的还是无符号的(在这种情况下,它是最大可表示的)。在有符号的情况下,为了指示虚假条目,通常使用-1值(或者当条目数量有限时使用极端值)
#include <iostream>
#include <string>
using namespace std;
#define BYTE char
#define CPUTYPE_INVALID ((BYTE)-1)
#define BYTE2 unsigned char
#define CPUTYPE_INVALID2 ((BYTE2)-1)
int main() {
cout << to_string(CPUTYPE_INVALID); // -1
cout << to_string(CPUTYPE_INVALID2); // 255
return 0;
}
http://ideone.com/DGTkwq 这是c风格的强制转换。由于BYTE
是unsigned类型,相当于unsigned char
,因此表达式((BYTE)-1)
相当于UCHAR_MAX
,其值很可能为255
。(这是将超出范围的整数值转换为无符号类型的规则所要求的;该值被包裹起来,所以它在范围内。)
它与255
的区别在于:(a)意图更清晰,(b)它保证表达式的类型为BYTE
,而常量255
的类型为int
。
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 当我们说在执行程序时将操作系统的控制权传递给main()函数时,我们的意思是什么
- 这句话在c++中的意思是什么
- 这个typedef的意思是什么
- 这句话的意思是什么
- 意思是什么
- 这个句法的意思是什么?