我有4个数字(int a,int b,int c,int d)等于rand()%7。我怎样才能发现这些数字是否以最短的方式彼此相等?检查4个数字是否相等的最简单方法?
-3
A
回答
0
要找出数字是否相等,你可以这样做:
if (a == b && b == c && c == d)
以上是由在数学中,它指出平等的传递特性支持的条件是:
如果a = b和b = c,则a = c。
鉴于属性,我们可以状态:
如果A = B,B = C,且c = d,则a = C,A = d,且b = d。
来源:Mathwords
1
你可以用一个单一的测试做到这一点:
int x = (1 << a) | (1 << b) | (1<< c) | (1<< d);
if ((x & (x >> 1)) == 0)
printf("a, b, c and d are identical\n");
它的工作原理,因为所有的值很小,小于位在int
数量。该测试检查x
是否为2的幂,只有在a,b,c和d的所有值相同的情况下才会如此。
chux提出了更短的解决方案:
if ((1 << a) == ((1 << b) | (1 << c) | (1 << d)))
printf("identical\n");
它可能不是比单纯的(a == b && b == c && c == d)
在较短的指令数,也不计算时间,这取决于你的平台,编译器,选项的细节...
这里是仅使用一个测试,并适用于更大范围的值,例如所有正int
值的更简单的一个:
if (((a - b) | (b - c) | (c - d)) == 0)
printf("identical\n");
相关问题
- 1. 检查两个数字是否相等的最佳方法
- 2. 检查两个数字是否接近相等的最简单方法是什么?
- 3. 最简单的方法来检查std :: map的所有值是否相等
- 4. 最简单的方法来检查OL3功能相等
- 5. 最简单的方法来检查字符串是否为URL
- 6. 检查两个CRgn是否相交的最简单方法是什么?
- 7. 检查两幅图像是否相同的最简单方法是什么?
- 8. 如何检查数组中的4个不同数字是否相等?
- 9. 检查数组中的所有元素是否相等的最快方法
- 10. 简单的方法来检查某个数字是否有最大精度2个小数位数?
- 11. 表单验证检查两个字段是否相等
- 12. 最简单的方法来检查方法是否由Castle DynamicProxy自动实现
- 13. 最简单的方法来检查整数是+1或-1 Java
- 14. 检查字符串是否包含多个单词的最快/最简单的方法
- 15. PHP:检查3个变量是否相同的最佳方法?
- 16. 检查对是否相等
- 17. 检查ForeignKeys是否相等
- 18. 检查AzureTable是否有任何数据的最简单有效的方法?
- 19. PHP:检查$ _SERVER ['HTTP_REFERER']是否相等的最佳方法是什么?
- 20. 是否有.net方法检查用户密码是否简单
- 21. 检查4个值是否相同
- 22. 检查两个位置是否相等
- 23. 检查两个“select”是否相等
- 24. 检查两个表是否相等
- 25. 检查两个向量是否相等
- 26. 检查两个字符数组是否相等C
- 27. 检查两个数字列表是否相等
- 28. Ant:检查两个数字是否相等
- 29. C++检查数据是否相等
- 30. 检查JS值是否存在的最简单方法是什么?
欢迎来到SO,在提问时请稍微具体一点:您尝试过什么,期望什么等。请参阅[如何提问](http://stackoverflow.com/help/how-to-ask ) – Nehal
通过比较他们? –
如果(a == b && b == c && c == d) – Idos