C 程序的输出 |第 53 集(运营商)
先决条件: C 中的运算符
1. 下面的输出是什么?#include
int main(void)
{
int a;
int b = 1;
int x[5] = { 1, 2, 3, 4, 5 };
a = 5 * 4 + x[--b] - (9 / b);
printf("%d", a);
return 0;
}
选项:
1. 12
2. 异常终止
3. 21
4. 无输出
The answer is option(2).
说明:这里方括号的优先级最高,这就是它首先被评估的原因。在那之后括号享有优先权,但我们有错误,因为在我们除以 9/0 时发生浮点异常。
2. 下面的输出是什么?
#include
int main(void)
{
int a;
int b = 1;
int x[5] = { 1, 2, 3, 4, 5 };
a = 5 * 4 + x[b++] - (9 / b);
printf("%d", a);
return 0;
}
选项:
1. 12
2. 20
3. 18
4. 无输出
The answer is option(3).
说明:这里方括号具有最高优先级,这就是它首先被评估的原因。之后括号优先。现在a=5*4+x[b++]-(9/b)=18。
参考:www.geeksforgeeks.org/c-operator-precedence-associativity/
3. 下面的输出是什么?
#include
int main(void)
{
int a;
int i = 1;
int b = 10 * i + sizeof(--i) + 4 - 10 / i;
printf("%d", b);
return 0;
}
选项:
1. 4
2. 2
3. 6
4. 8
The answer is option(4).
说明:这里 sizeof()运算符享有最高优先级,结果为 4。但在 sizeof()运算符内部无法进行评估。
4. 下面的输出是什么?
#include
int main(void)
{
int a = 9;
float x;
x = a / 2;
printf("%f", x);
return 0;
}
选项:
1. 4.000000
2. 0
3. 4
4.无输出
The answer is option(1).
解释:这里 9/2 是 4。然后 4 被分配给浮点数,它变成 4.000000。
5. 下面的输出是什么?
#include
int main(void)
{
int a = 9;
float x;
x = (float)a / 2;
printf("%f", x);
return 0;
}
选项:
1. 4.000000
2. 4.50
3. 4
4. 4.500000
The answer is option(4).
说明:在类型转换的帮助下,我们能够得到准确的结果。
参考:https://www.geeksforgeeks.org/type-conversion-c/