设有int变量i,j,k,其值分别为1,2,3

执行表达式后:
i++= =1&&(++j= =3||k++=3)
表达式值为__1__, i的值为___2____, j的值为___3____, k的值为__3_____,
求解析

根据C的运算顺序
第一步运算括号内的程序
括号内先运行++ --顺序是由右向左
算后 j=3;k=4 (注:J=3是最后结果,K=4不是最后结果,下面还有赋值运算)
然后运算==
得到结果 1||k=3
再预算||
得到(++j= =3||k++=3)表达试为1
最后进行 = 赋值预算所以K=3 (注:K=3是最后结果)
第二步根据第一步预算得到表达式 i++==1&&1
先进行++ --运算
i=2 (注:I=2是最后结果)
再行进==预算
得到表达式0&&1
最后得到表达式的值为0

与你的结果不太一致,提供参考。下边是C语言的运算顺序,可以根据这个来运算。

C语言运算符分类
  1级(左结合)
  () 圆括号;[]下标运算符;->指向结构体成员运算符;. 结构体成员运算符。
  2级(右结合)
  !逻辑非运算符;~按位取反运算符;++前缀增量运算符;--前缀减量运算符;+正号运算符;-负号运算符;(类型)类型转换运算符;*指针运算符;&地址运算符;sizeof长度运算符。
  3级(左结合)
  *乘法运算符;/除法运算符;%取余运算符。
  4级(左结合)
  +加法运算符;-减法运算符。 
  5级(左结合)
  <<左移运算符;>>右移运算符。
  6级(左结合)
  <、<=、>、>=关系运算符。
  7级(左结合)
  ==等于运算符;!=不等于运算符。
  8级(左结合)
  &按位与运算符。
  9级(左结合)
  ^按位异或运算符。
  10级(左结合)
  |按位或运算符。
  11级(左结合)
  &&逻辑与运算符。
  12级(左结合)
  ||逻辑或运算符。
  13级(右结合)
  ? :条件运算符。
  14级(右结合)
  =、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>=赋值运算符。
  15级(左结合)
  ,逗号运算符。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-01-04
等等,这个题有问题
k++=3
这里k++不是左值表达式,编译时就会出错
第2个回答  2012-01-04
你要给定i,k,j的数值才可以帮你解决问题的,我给答案你,你只要把对应的数值带进去就可以了
表达式值为__1__, i的值为___i+1____, j的值为___j+1____, k的值为__k+1_____,
因为还没有i,k,j的值,所以第一问还不能解决
相似回答