Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这在C中意味着什么?我如何使用它? 我在C++中看到了下面的代码,我在IDA Pro: __int64 __fastcall sub_14023B480(__int64 a1) { return *(_DWORD *)(a1 + 0x384) > 0 && !(*(_BYTE *)(a1 + 0xE8) & 8) && !(*(_DWORD *)(a1 + 0x290) & 0x800000); }_C#_C++_Reverse Engineering - Fatal编程技术网

C# 这在C中意味着什么?我如何使用它? 我在C++中看到了下面的代码,我在IDA Pro: __int64 __fastcall sub_14023B480(__int64 a1) { return *(_DWORD *)(a1 + 0x384) > 0 && !(*(_BYTE *)(a1 + 0xE8) & 8) && !(*(_DWORD *)(a1 + 0x290) & 0x800000); }

C# 这在C中意味着什么?我如何使用它? 我在C++中看到了下面的代码,我在IDA Pro: __int64 __fastcall sub_14023B480(__int64 a1) { return *(_DWORD *)(a1 + 0x384) > 0 && !(*(_BYTE *)(a1 + 0xE8) & 8) && !(*(_DWORD *)(a1 + 0x290) & 0x800000); },c#,c++,reverse-engineering,C#,C++,Reverse Engineering,a1是一个实体 0x384指向运行状况值 0xE8和0x290指向某种标志,但为什么我不能在C中编写这样的检查: if(!(a1 + 0xE8) & 8) { //Do something } 因为在C中,&运算符返回int值。在C中!运算符不能应用于这样的非布尔类型——这是一个已知C和C++程序员都惊讶的事实。 要修复标记检查,您需要编写 if (((a1 + 0xE8) & 8) == 0) { //Do something } 由于运算符优先级,所有括号

a1是一个实体

0x384指向运行状况值

0xE8和0x290指向某种标志,但为什么我不能在C中编写这样的检查:

if(!(a1 + 0xE8) & 8)
{
    //Do something
}

因为在C中,&运算符返回int值。

在C中!运算符不能应用于这样的非布尔类型——这是一个已知C和C++程序员都惊讶的事实。 要修复标记检查,您需要编写

if (((a1 + 0xE8) & 8) == 0)
{
    //Do something
}
由于运算符优先级,所有括号都是必需的。如果没有中间括号,8==0将在&之前求值,并导致另一个编译器错误,运算符&不能应用于int和bool。

…&8==0?在C版本中a1是什么类型?Int64?将类型后缀附加到数字文字以与表达式的其余部分匹配。显示完整的代码,您得到了什么编译器错误或运行时异常。。。int value…:二进制运算符&采用整数类型,long/ulong就是这样。