特牛网址导航

一个C语言运算符优先级导致的问题_c语言运算优先级-CSDN博客

网友收藏
检测某个数的某个二进制位是否为0,是常见的控制逻辑,如下代码所示:if (x & (1<<2) == 0) { printf("x的第2个二进制位为0\n");}然而实际上,上述代码永远不会执行printf,也就是说 x & (1<<2) == 0这个表达式始终为0。原因在于在C语言里,==运算符的优先级高于&,导致上面的表达式相当于:if ( x & ((1<<2) == 0) )因为1_c语言运算优先级