Tag: 运算符

如何通过Java中的指针算法访问数组元素

鉴于C中的以下声明,我可以对地址应用“+”,并访问其他元素。 char toto[5]; 换句话说,应用此运算符+ toto+0x04 在Java中访问不同的数组元素。 还有另一种在java中实现此操作的方法吗? 非常感谢

64位数学运算,不会丢失任何数据或精度

我相信128位数据没有任何便携式标准数据类型。 因此,我的问题是如何在不使用现有标准数据类型丢失数据的情况下有效地执行64位操作。 例如:我有两个uint64_t类型变量: uint64_t x = -1; uint64_t y = -1; 现在,如何存储/检索/打印数学运算的结果,如x+y, xy, x*y and x/y ? 对于上面的变量,x + y得到-1的值,实际上是带有进位1的0xFFFFFFFFFFFFFFFFULL。 void add (uint64_t a, uint64_t b, uint64_t result_high, uint64_t result_low) { result_low = result_high = 0; result_low = a + b; result_high += (result_low < a); } 如何像add一样执行其他操作,从而提供适当的最终输出? 如果有人共享通用算法,我会很感激,这些算法可以解决使用这些操作可能出现的溢出/下溢等问题。 任何可能有帮助的标准测试算法。

关于运营商“&”的问题

可能有错误的标题,但我不知道如何描述它。 int x=0x4a; h=!(0x80000000000&(0x39+(~x+1))); 结果是h = 0。 问题是x有32位,而0x80000000000有32位以上。 如果我将变量i设置为0x80000000000并将其打印为hex格式,则它将显示0.因此,在这种情况下,为什么h的结果为1,因为0x80000000000变为0? 我用的语言是C.

什么是?:运算符

在Objective-C代码的示例中,我找到了这个运算符 self.itemViews[@(0)] ?: [self.dataSource slidingViewStack:self viewForItemAtIndex:0 reusingView:[self dequeueItemView]]; 该代码在Apple LLVM 4.2下编译。 我遇到的唯一一件事就是成为一个向量运算符,但我不认为Objective-C,就C而言,它有向量运算符。 那么有人可以提供此运营商的参考和/或文档。

在PHP中是否有像C中那样的相同运算符===?

在PHP中 , Identical Operatpr ( === )如果两边完全相等则返回TRUE ,并且它们的类型相同。 C世界有类似的东西吗?

关于*(星号)和++中的++的混淆

int main() { int a=10; int *b=&a; int c=*b++; printf(“%d”,c); } 我知道以下程序输出10.但是根据优先级表给出了运算符http://www.difranco.net/compsci/C_Operator_Precedence_Table.htm的优先级,post-fix ++的优先级高于=和* .so ++应该首先评估,然后*。然后为什么程序打印输出为10?

x && y || z如何评估?

特定 int x=1,y=2,z; 你能解释一下为什么结果: x && y || z 是1? x && y = 1 x && y || z = 1

C中的“++”操作是primefaces的吗?

我试图确定是否有如下声明: ++value; //assuming “value” is a **global** variable 是primefaces操作。 我需要知道这个计算是否能够被写入同一个全局变量的中断服务程序中断。

遗留代码中的隐秘线“??!??!”

我正在重构一些非常古老的遗留代码,这些代码充满了错误和非常可疑的做法,至少对于现代标准而言。 现在我跑过一条线,我根本无法破译: p和k的类型为int * return p??!??!k?p?*p:sizeof(*k):0; 当我看到它时,我简直不敢相信自己的眼睛 – 我知道? 运算符,但它的语法是bool ? trueresult : falseresult bool ? trueresult : falseresult和?? 运算符没有意义(懒惰的评估确实不适用于此处),我无法在任何地方找到该神秘运算符的引用。 如果有人对这件事情有所了解,那真是太酷了。

C not运算符是否适用于int?

我有 int x = 5; printf(“%d”, x); //i get 5… expected x = !x; printf(“%d”, x);// i get 0… hmm 二进制中的5是:0101如果我们对每个位应用逆,我们应该得到1010,但是! 它不一定是逆变器,它是一个逻辑运算符。 为什么我得到0 ? 是这样的原因,在C中,正数被视为真,所以! – 它会导致0? 这个编译器具体吗?