C 程序的输出 |第 58 集(运算符)
先决条件: C 中的运算符
Q.1 这个程序的输出是什么?
#include
using namespace std;
int main()
{
printf("value is = %d", (10 ++));
return 0;
}
选项
一)10
b) 11
c) 编译时错误
d) 运行时错误
ans: c
说明:作为增量运算符所需的左值仅对变量而不是常量值进行操作。
Q.2 这个程序的输出是什么?
#include
using namespace std;
int main()
{
int i = 0, j = 1, k = 2, m;
m = i++ || j++ || k++;
printf("%d %d %d %d", m, i, j, k);
return 0;
}
选项
a) 1 1 2 3
b) 1 1 2 2
c) 0 1 2 2
d) 1 2 3 3
ans:- b
说明:一旦表达式的值在 OR 中为真,后面的表达式将不会被计算,因此 j = 1 被分配给 m 。
Q.3 这个程序的输出是什么?
#include
using namespace std;
int main()
{
int y = 10;
if (y++ > 9 && y++ != 10 && y++ > 11)
printf("%d", y);
else
printf("%d", y);
return 0;
}
选项
一)11
b) 12
c) 13
d) 以上都不是
ans: c
说明 : and运算符(&) 被使用,所以即使第一部分为真,整个表达式也会被评估。
Q.4 这个程序的输出是什么?
#include
using namespace std;
int main()
{
int i = 10;
i = !i > 14;
printf("i=%d", i);
return 0;
}
选项
a) i=1
b) i=0
c) i=10
d) 这些都不是
ans:- b
说明:非操作符(!) 的优先级高于运算符(>),因此 0>14 的计算结果为 false。
Q.5 这个程序的输出是什么?
#include
using namespace std;
int main()
{
int a = 3, b = 5, c, d;
c = a, b;
d = (a, b);
printf("c=%d d=%d", c, d);
return 0;
}
选项
a) c=3 d=5
b) c=5 d=5
c) 无法确定
d) 这些都不是
ans : a
说明: '(' 的优先级比 ', ' 更大,所以首先在 c 中分配 a,然后在 d 中分配 b。
Q.6 这个程序的输出是什么?
#include
using namespace std;
int main()
{
int y = 10;
if (y++ > 9 && y++ != 11 && y++ > 11)
printf("%d", y);
else
printf("%d", y);
return 0;
}
选项
一)11
b) 12
c) 13
d) 14
ans: b