龙空技术网

C语言陷阱「语法陷阱 运算符的优先级问题」

彭蠡杂谈 243

前言:

今天你们对“c语言三目运算符优先级”大约比较关切,你们都想要学习一些“c语言三目运算符优先级”的相关文章。那么小编同时在网上汇集了一些有关“c语言三目运算符优先级””的相关文章,希望同学们能喜欢,小伙伴们快快来了解一下吧!

C语言陷阱【语法陷阱】

2、运算符的优先级问题

运算符是C语言表达式的重要组成部分,正确编写C程序表达式要注意运算符的优先级,否则会产生预想不到的问题。如:If(f1 & f2 !=0),本意是先计算f1&f2,再判断其值是否为0,但由于运算符!=的优先级高于&,实际上表达式被解释为:f1&(f2!=0),先判断f2是否为0,然后再与f1进行&运算。

C语言中的运算符包括,单目运算符、双目运算符、三目运算符。其优先级大小关系为:单目运算符>双目运算符>三目运算符。具体优先级如下图:

运算符优先级

所以,while(c=getc(in)!=EOF)

Put(c,out);

中c=getc(in)!=EOF,因为!=的优先级高于赋值运算符,该表达式实际被解释为:c=(getc(in)!=EOF),首先判断getc(in)是否不等于EOF,然后将判断结果赋值给c。

本期问题:*p++ 的解释结果,*p()的解释结果。

标签: #c语言三目运算符优先级