【发布时间】:2014-11-18 04:11:43
【问题描述】:
我遇到了一个问题,我想验证我的假设是否正确。
给定以下代码:
1. int i = -2, j = 1, ans;
2. ans = i++ || ++j;
3. printf("%d %d %d", i,j, ans);
输出为:-1 1 1
在 C 语言中,似乎只有 0 会被视为 false,任何其他值在与逻辑运算符一起使用时都会被视为 true。所以我不怀疑为什么 ans 派生为 1 (true || true 给我们 true(1) )
我想在这里问的是:尽管++j,为什么j 的值仍然是1 而不是2?
可以安全地假设逻辑运算符 || && 之后的 any 算术运算将仅在使用它的行(在本例中为第 2 行)有效,之后变量仍然保留原来的价值?
【问题讨论】:
标签: c logical-operators