这是它的样子
public Object[] settings = {true, true, false, 1, true, false, 10, 10, 20, false, false, false, false, false, {true, true, true, true}};
Run Code Online (Sandbox Code Playgroud)
错误:
illegal initializer for java.lang.Object
Run Code Online (Sandbox Code Playgroud)
在另一个IDE中,我收到此错误.
Static Error: Array initializer must be assigned to an array type
Run Code Online (Sandbox Code Playgroud) 我知道只有当它通过任何方式评估为真时,语句才有效OR/AND
.
我不明白为什么计算机至少在C++上无法理解这一点.
#include <stdio.h>
#include <stdbool.h>
int main(void) {
// your code goes here
if(false && false)
printf("true\n");
else
printf("false\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:false
我知道,看着那段代码,你很快就会看到2个谬误,这将是错误的.
但是,如果他们两个都作为一个AND运算符一起变得虚假,那会怎样呢?不试图在NOT
这里的操作员只是不明白为什么2个错误的检查在一起,两个给出相同的输出不是真的?
现在我写了更多关于这个似乎会打破很多程序嘿嘿...
我想我只是想知道一种不同的思维方式,一瞬间,我不明白为什么它不会那样工作.
编辑:yaa我想我会收到一堆downvotes我想这只是简单的计算机是如何构建的,他们没有真正的逻辑
编辑2:
好的,我会举个例子
假设您必须将一堆数据包组合在一起,而不是垃圾邮件过多的小数据包.但是有一个问题,如果那些小数据包太大你根本无法将它们组合起来就像发送它们一样.但是,假设您已经开始组合数据包,并且在此过程中会产生一个大数据包,因此您无法继续进行任何进一步的操作,您必须在此处退出并发送当前的组合数据包.
问题是什么时候突破列表中的数据包循环..
我试图避免有2个循环来检查高级列表,知道该怎么做尝试使其尽可能优化对我来说非常重要.
所以我进入了一个项目
if(already building a combined packet boolean AND current_packet->size > MAX_COMBINE_PACKET)
break;
else
//don't try to combine the packets just send normally.
Run Code Online (Sandbox Code Playgroud)
所以在这种情况下我还没有开始组合数据包,数据包大小可以适合组合数据包.
但是在这种情况下,如果数据包已经开始组合或者尚未开始组合但是仍然可以组合它并不会尝试将它组合起来并不重要.
我想我需要把它分成更多if语句.
编辑3:真实的代码
/* pull packets from packet list into buf, and erase/free them */
static int pull_packets(packet_list_t *l, …
Run Code Online (Sandbox Code Playgroud) 我不知道原始代码,但我不相信这是复杂的右移和abs.
以下是重命名的反编译IDA PRO代码的外观
char Ship; //Could be 0-7 (8 is reversed for special purpose)
char NewShip = 1; //Could be 0-7 (8 is reversed for special purpose)
short Frequency = 0; //This could be from 0 to 9999
bool NumberToFrequency = true;
Frequency = GetNextFrequencyToJoin(player->MyArena);
if ( NumberToFrequency )
{ //TODO: maybe the below is just Frequency % 7; ?
NewShip = (((unsigned long)Frequency >> 32) ^ abs(Frequency) & 7) - ((unsigned long)Frequency >> 32);
Ship = NewShip;
} else …
Run Code Online (Sandbox Code Playgroud) 这是一些示例代码
int test = 1234;
int modValue, andValue;
modValue = test % -8;
andValue = test & 7;
printf("Mod Value = %d And Value = %d\n", modValue, andValue);
int counter = 0;
for(counter = 0; counter < 10000; counter++) {
modValue = counter % -8;
andValue = counter & 7;
if(modValue != andValue) {
printf("diff found at %d\n", counter);
}
}
Run Code Online (Sandbox Code Playgroud)
Ideone链接:http://ideone.com/g79yQm
负数给出了不同的结果,这是关于它的,但除此之外,它们总是对所有正值都起到完全相同的作用吗?
即使对于负数,它们似乎也只是总是偏离1循环.
那些想知道它类似于这个问题的人为什么模运算符是必要的?问题,但我不减1.
这使用的负值高于模数值,是的只适用于正值.
我从IDA-PRO中发现这个Hex-Ray的反编译器似乎有时会生成一个模数%
,有时会生成AND
&
两个相同源代码的运算符.我想这是来自优化器.
由于我反编译的这个项目甚至不应该使用负值我想知道什么是原始源代码怀疑任何人使用带负值的模数虽然看起来很奇怪.
同样使用And
模数命令我怎么知道循环操作总是使用模数,在这种情况下,人必须使用a, …