为什么在这种情况下打印错误
Why it prints false in this case?
int main() {
char * a = (char*)malloc(1);
*a = 0xff;
std::cout << (*a == 0xff);
return 0;
}
为什么它打印 0 而不是 1?
0xff
是一个整数常数,其类型是int
。要进行比较,*a
必须提升为int
。
看起来char
已在您的平台上签名。因此,当提升为整数时,将有符号扩展。
假设 32 位int
,您正在比较0xffffffff
与0x000000ff
。
切换到unsigned char
将可靠地提供您想要的结果。
十六
进制中的0xff是十进制中的255。char 关键字表示有符号字符,其范围为 -128 到 127(含)255 不能存储在字符中,它会溢出。无论结果值如何,它都不0xff。
因此,它打印假。
希望对您有所帮助! :)
相关文章:
- 使用 <list> (错误 C2760) 打印队列的元素
- 任何人都可以弄清楚这段代码如何显示运行错误?它打印无限时间 -1 以及正确答案
- 为什么重载运算符<<打印特征类成员会导致段错误?
- 我编写了以下代码来读取C++矩阵,然后打印其行和列.我收到此错误
- 我在C++中编写了一个方法来打印树类的预序,但它显示了分割错误
- 错误含义;以二进制形式打印数字
- 通过基类引用派生类后打印的错误值
- 如何在没有打印语句的情况下报告用户输入错误
- 为什么没有打印错误消息
- C++打印模板容器错误(错误:"运算符<<"的不明确重载)理解?
- 错误:变量或字段'PrintEntity'声明无效无效打印实体(实体 e);
- 将矢量的整数内容打印为字符串会导致分割错误
- 为什么我的C++代码在以下打印链表的代码片段中显示分段错误?
- C++ 添加编译器警告,以错误使用自定义打印/日志功能
- 尝试用纯 c 编程 arduino,得到以下错误:预期的"="、""、";",'asm'或"打印"之前的'__attribute__'|
- Python - 从 c++ DLL 错误打印值
- 使用std :: String ptr的错误打印std :: String
- 枚举类的GoogleTest测试错误打印
- 分段错误:打印动态数组时为 11
- Ustring错误(打印期间)