c - 如何在具有较高优先级的操作之前在 C 中运行具有较低优先级的操作
问题描述
#include <stdio.h>
int main()
{
short int a,b;
a=1;
b=1;
if ( (a | 65534)&1 == (b | 65534)&1 )
{
printf("The rightmost bit is the same");
}
else
{
printf("The rightmost bit is different");
}
return 0;
}
}
输出:最右边的位不同
预期:最右边的位相同
这里“==”在“&”之前运行,这是不可取的。我可以采用另一个变量来解决这个问题,但不采用另一个变量是这个赋值的重点......
解决方案
添加更多括号:
if ( ((a & 65534)&1) == ((b & 65534)&1) )
推荐阅读
- google-apps-script - 如何在谷歌应用脚本中使用 Jobs 资源?
- javascript - PHP openssl_encrypt 响应与 CryptoJS AES 加密不匹配
- multi-factor-authentication - Azure 存储资源管理器是否不支持激活条件访问的设置?
- msbuild - 为解决方案集中设置 nuget 包版本 - Directory.Build.props vs MSBuildSdks.CentralPackageVersions
- perl - 是否有任何替代 $ssh->print() 和 $ssh->waitfor() ,ssh 是一个新的 Net::Telnet?
- android - 简单的 stepCounter 不适用于不同的手机
- ios - TextView 点击在 iOS 14 上不起作用
- android - CardView 不缩放图像
- php - Flipkart 卖家 API 在发布帖子时显示错误 Invalid FSN
- python - settings.py,TypeError:不支持的操作数类型/:'str'和'str'