taoyuan7788

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

a=b=c=1; ++a||++b&&++c; 问语句执行顺序?

a=b=c=1; ++a||++b&&++c; 问语句执行顺序?
解答:
“赋值语句结合性 自右向左”是正确的,所以a=b=c=1;的执行顺序是:
c=1;
b=1;
a=1;

++a||++b&&++c;语句的执行顺序也是对的,我多啰嗦解释一下啊。

算数运算符比逻辑运算符等级高
首先,++出现在a之前,表示在执行“++a||++b&&++c;”语句之前完成自加运算,所以要先执行自加。同理,b和c也是先完成自加运算。这部分解释可以表述为:
++a;//即执行a=a+1;
++b;//即执行b=b+1;
++c;//即执行c=c+1;
逻辑运算符号也是分等级的 !运算符等级最高,“&&的优先级比||高”,不是貌似,的确是的哦,所以
b&&c被执行。注意,此时的b和c已经完成了自加运算。
a||(b&&c)最后被执行。

 

 C语言中逻辑运算符_ ___的优先级高于算术运算符。

 逻辑非(即‘!’操作符) 优先级高于算术运算符。所有的单目操作符优先级都高于双目和三目操作符。

C语言中逻辑运算符有三种,分别是逻辑与&&,逻辑或||,逻辑非!,其中&&相当于and,||相当于or,!相当于not,而且这三种运算符之间是有级别的,逻辑非的级别最高,其次就是逻辑与、逻辑或。也就是说当三者同时出现时,先执行逻辑非,再执行逻辑与,最后执行逻辑或。当逻辑运算符、算术运算符、关系运算符、赋值运算符同时出现时,先执行逻辑非,再执行算术运算符,然后关系运算符,加下来是逻辑与逻辑或,最后是赋值运算符。

例如:
if(a>b && a>c)printf("正确") 当且仅当a>b且a>c时(即两个条件要同时),此语句执行;
if(a>b || a>c)printf("正确") 当且仅当a>b或者a>c时(即只需要满足一个条件就行),此语句执行;
若条件a为真,!a则为假。
a==b || x==y,先执行a==b和x==y,然后将二者合并取逻辑或运算

其他的类推

————————————————————————————————————————————————————————————————————————————————

单目运算符

 
运算所需变量为一个的运算符叫单目运算符
逻辑非运算符【!】、按位取反运算符【~】、自增自减运算符【++ --】、负号运算符【-】、类型转换运算符【(类型)】、指针运算符和取地址运算符【*和&】、长度运算符【sizeof】
运算所需变量为两个的运算符叫做双目运算符,例如+,-,*,/,%,<,>,>=,<=,==,!=,<<,>>,&,^,|,&&,||,=
运算所需变量为三个的运算符叫做三目运算符,只有条件表达式【?:】
posted on 2013-07-12 10:04  taoyuan7788  阅读(4805)  评论(0编辑  收藏  举报