【发布时间】:2016-06-17 12:58:59
【问题描述】:
我只是想知道在以下情况下边界检查是如何工作的。
#include <stdio.h>
#include <stdint.h>
int main(void)
{
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
for (int x = 0; x < 3; x++) {
printf("%d < %d < %d is %d\n", i, x, j, i < x < j);
}
}
}
return 0;
}
我尝试了从右到左/从左到右的优先级,但它似乎不起作用。 (虽然不太确定,也许确实如此?)
我认为这是未定义的行为,使用 && 可能比弄清楚这一点更容易,但我对这背后的逻辑如何运作非常感兴趣。如果有人可以帮助解释这一点或指出我正确的方向,将不胜感激
编辑:感谢所有帮助!得到了我需要的答案。这在你们所有人看来一定是微不足道的,但它确实让我在过去几天里想到的很多事情都得到了点击。真的很感谢你们花时间帮助我。再次感谢!
【问题讨论】:
-
标题不会误导吗?整数边界与此有什么关系?
-
我把它读作“你如何检查整数 x 是否在 i 和 j 之间”。
-
printf("%d < %d < %d is %d\n", i, x, j, (i < x)&&(x < j)); -
为误导性的标题道歉!我对此很陌生,所以我真的不知道要使用什么术语。在那个时候,这个标题对我来说似乎是一个不错的选择。也许您可以澄清使用整数边界的正确上下文?我真的很感激你的帮助,这样我就不会再犯同样的错误了。反正现在不知道怎么改。找不到可以编辑标题的地方。对不起!
标签: c