(c语言题)已知有声明"int a=12,b=15,c;",则执行表达式"c=(a||(b-=a)

(c语言题)已知有声明"int a=12,b=15,c;",则执行表达式"c=(a||(b-=a))"后,变量b和c的值分别为____。
A.3,1 B.15,12 C.15,1 D.3,12

选C。
"||"是逻辑运算符“或”,即有真则真。
c语言中非0为真,0为假。
a!=0所以(a||(b-=a))为真,后面的b-=a不需判断被忽略
所以b不变,c=1追问

为什么b不变?

追答

C语言的规则:
"||"前者为真则后者被跳过,值为1(真),其它情况后者需进行判断;
"&&"前者为假则后者被跳过,值为0(假)……

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-12-22
选A
b-=a:b=b-a;
因为b与a都不为0 所以c=1
第2个回答  2013-12-22
选c追问

为什么?

追答

‖运算是逻辑运算,只要二者不全为零就是1,只给c付了值,所以b没有改变

相似回答