📅  最后修改于: 2023-12-03 14:54:51.169000             🧑  作者: Mango
这是一个关于 UGC NET CS 2018 年 12 月 – II 的问题,涉及程序员面试中经常被问到的知识点。现在我来给大家介绍一下这个问题。
以下程序段的输出是什么?
main() {
int x = 10, y = 15;
if (x != 10 && x / 0)
printf("Hello");
else
printf("Hi");
if (y != 15 && y / 0)
printf("GeeksforGeeks");
else
printf("GEEK");
}
A. 不输出任何东西。
B. 输出 Hi GEEK。
C. 输出 GEEK。
D. 输出 Hi GeeksforGeeks。
这是一个关于运算符优先级的问题。在 C 语言中,逻辑与运算符 &&
的优先级高于除法运算符 /
,也就是说,当使用 &&
时,如果第一个条件不成立,那么第二个条件不会被执行。因此,在这个程序中,第一个条件 x != 10
显然是成立的,所以第二个条件 x / 0
不会被执行,也就是不会出现除数为零的错误,程序会继续执行输出 Hi
。
第二个 if 语句也是同理,也不会执行错误的除法运算,输出为 GEEK
。
## 解析
这是一个关于运算符优先级的问题。在 C 语言中,逻辑与运算符 `&&` 的优先级高于除法运算符 `/`,也就是说,当使用 `&&` 时,如果第一个条件不成立,那么第二个条件不会被执行。因此,在这个程序中,第一个条件 `x != 10` 显然是成立的,所以第二个条件 `x / 0` 不会被执行,也就是不会出现除数为零的错误,程序会继续执行输出 `Hi`。
第二个 if 语句也是同理,也不会执行错误的除法运算,输出为 `GEEK`。
## 代码
```c
main() {
int x = 10, y = 15;
if (x != 10 && x / 0)
printf("Hello");
else
printf("Hi");
if (y != 15 && y / 0)
printf("GeeksforGeeks");
else
printf("GEEK");
}