📜  C |运营商|问题1

📅  最后修改于: 2021-05-28 05:37:39             🧑  作者: Mango

#include "stdio.h"
int main() 
{ 
  int x, y = 5, z = 5; 
  x = y == z; 
  printf("%d", x); 
  
  getchar(); 
  return 0; 
}

(A) 0
(B) 1
(C) 5
(D)编译器错误

答案: (B)

说明:问题的症结在于语句x = y == z。的运算符符==,是因为优先运算符=之前执行(<=,> =和==)比赋值运算符=高。
运算符的结果是0或1根据该比较结果。由于y等于z,表达式y == z的值变为1,并且该值通过赋值运算符赋给x。