gpt4 book ai didi

c++ - 关键字符的十进制表示

转载 作者:行者123 更新时间:2023-11-28 08:00:53 25 4
gpt4 key购买 nike

我不太熟悉 C++,所以当我浏览 crackme 的源代码时,当它看起来像是短的 -223 或

foo = 0xde;// 222
unarfoo = ~(foo);// -223

被翻译成字符“!”当我运行这行代码时...

cout << (char)(~(foo));// outputs "!"

这显然不是 ascii 转换,因为 ascii 不对字符使用负数,所以我猜这是 C 编译所独有的东西,因为当我尝试将任何负 short/int 转换为 char 时java 我得到的只是一个“?”。

谁能详细说明到底发生了什么以及为什么?非常感谢!

最佳答案

0xde = 11011110b, ~(0xde) = 00100001b = 0x21 hex 在 ASCII 表中代表 !

所以 C++ 中的 ~ 运算符是按位取反

关于c++ - 关键字符的十进制表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11495644/

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