关于C语言, 以下程序的运算结果为()
main(){inta=1,b=2,c;c=(a>b)?b++:(++a>4)?b++;a+++;printf("%d%d%d",a,b,c);}主要是c=(a>b)?b...
main() {int a=1,b=2,c; c=(a>b)?b++:(++a>4)?b++;a+++; printf("%d%d%d",a,b,c); } 主要是c=(a>b)?b++:(++a>4)?b++;a+++;的运算顺序不是太明白。
展开
展开全部
一看就是狗血的C语言试题。正常程序员肯定不写这样坑爹的语句。
1、条件运算符具有右结合性。且条件运算符优先级高于赋值、逗号运算符,低于其他运算符
。
2、当一个表达式中出现多个条件运算符时,应该将位于最右边的问号与离它最近的冒号配对,并按这一原则正确区分各条件运算符的运算对象。
3、所以这一句等价于c=【(a>b)?b++
:【(++a>4)?b++:a++】】;就是先运行小括号内的,然后运行我给你标注的中括号内的内容,括号具有左结合性,所以先判断a是否大于b;很显然1<2,所以运行(++a>4)?b++:a++。你可能不理解这个句子语句(++a>4)?b++:a++;因为有++a,所以a先加1(a=2),判断其是不是大于4,显然2<4,所以a++,但是没用,a值不会改变。因为:
如果a=1,b=a++,运算完b=1,a=2
如果a=1,b=++a,运算完b=2,a=2
所以最后结果为2,2,2。
你参考一下表达式优先级:
1级优先级(左结合)
()
圆括号;[]下标运算符;->指向结构体成员运算符;.
结构体成员运算符。
2级优先级(右结合)
!逻辑非运算符;~按位取反运算符;++前缀增量运算符;--前缀减量运算符;+正号运算符;-负号运算符;(类型)类型转换运算符;*指针运算符;&地址运算符;sizeof长度运算符。
3级优先级(左结合)
*乘法运算符;/除法运算符;%取余运算符。
4级优先级(左结合)
+加法运算符;-减法运算符。
5级优先级(左结合)
<<左移运算符;>>右移运算符。
6级优先级(左结合)
<、<=、>、>=关系运算符。
7级优先级(左结合)
==等于运算符;!=不等于运算符。
8级优先级(左结合)
&按位与运算符。
9级优先级(左结合)
^按位异或运算符。
10级优先级(左结合)
|按位或运算符。
11级优先级(左结合)
&&逻辑与运算符。
12级优先级(左结合)
||逻辑或运算符。
13级优先级(右结合)
?
:条件运算符。
14级优先级(右结合)
=、
+=、
-=、
*=、
/=、
%=、
&=、
^=、
|=、
<<=、
>>=赋值运算符。
15级优先级(左结合)
,逗号运算符。
1、条件运算符具有右结合性。且条件运算符优先级高于赋值、逗号运算符,低于其他运算符
。
2、当一个表达式中出现多个条件运算符时,应该将位于最右边的问号与离它最近的冒号配对,并按这一原则正确区分各条件运算符的运算对象。
3、所以这一句等价于c=【(a>b)?b++
:【(++a>4)?b++:a++】】;就是先运行小括号内的,然后运行我给你标注的中括号内的内容,括号具有左结合性,所以先判断a是否大于b;很显然1<2,所以运行(++a>4)?b++:a++。你可能不理解这个句子语句(++a>4)?b++:a++;因为有++a,所以a先加1(a=2),判断其是不是大于4,显然2<4,所以a++,但是没用,a值不会改变。因为:
如果a=1,b=a++,运算完b=1,a=2
如果a=1,b=++a,运算完b=2,a=2
所以最后结果为2,2,2。
你参考一下表达式优先级:
1级优先级(左结合)
()
圆括号;[]下标运算符;->指向结构体成员运算符;.
结构体成员运算符。
2级优先级(右结合)
!逻辑非运算符;~按位取反运算符;++前缀增量运算符;--前缀减量运算符;+正号运算符;-负号运算符;(类型)类型转换运算符;*指针运算符;&地址运算符;sizeof长度运算符。
3级优先级(左结合)
*乘法运算符;/除法运算符;%取余运算符。
4级优先级(左结合)
+加法运算符;-减法运算符。
5级优先级(左结合)
<<左移运算符;>>右移运算符。
6级优先级(左结合)
<、<=、>、>=关系运算符。
7级优先级(左结合)
==等于运算符;!=不等于运算符。
8级优先级(左结合)
&按位与运算符。
9级优先级(左结合)
^按位异或运算符。
10级优先级(左结合)
|按位或运算符。
11级优先级(左结合)
&&逻辑与运算符。
12级优先级(左结合)
||逻辑或运算符。
13级优先级(右结合)
?
:条件运算符。
14级优先级(右结合)
=、
+=、
-=、
*=、
/=、
%=、
&=、
^=、
|=、
<<=、
>>=赋值运算符。
15级优先级(左结合)
,逗号运算符。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询