C语言中有一道题目:已知"int a=4,b=5,c;",则执行表达式"c=a=a>b后变量a的值为( ) A 0 B 1 C 4 D 5本人新手,求高手,不会的酒别来迷糊我了,谢谢
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/24 06:36:11
![C语言中有一道题目:已知](/uploads/image/z/2478736-64-6.jpg?t=C%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%9C%89%E4%B8%80%E9%81%93%E9%A2%98%E7%9B%AE%EF%BC%9A%E5%B7%B2%E7%9F%A5%22int+a%3D4%2Cb%3D5%2Cc%3B%22%2C%E5%88%99%E6%89%A7%E8%A1%8C%E8%A1%A8%E8%BE%BE%E5%BC%8F%22c%3Da%3Da%3Eb%E5%90%8E%E5%8F%98%E9%87%8Fa%E7%9A%84%E5%80%BC%E4%B8%BA%EF%BC%88+%EF%BC%89+A+0+B+1+C+4+D+5%E6%9C%AC%E4%BA%BA%E6%96%B0%E6%89%8B%2C%E6%B1%82%E9%AB%98%E6%89%8B%2C%E4%B8%8D%E4%BC%9A%E7%9A%84%E9%85%92%E5%88%AB%E6%9D%A5%E8%BF%B7%E7%B3%8A%E6%88%91%E4%BA%86%2C%E8%B0%A2%E8%B0%A2)
C语言中有一道题目:已知"int a=4,b=5,c;",则执行表达式"c=a=a>b后变量a的值为( ) A 0 B 1 C 4 D 5本人新手,求高手,不会的酒别来迷糊我了,谢谢
C语言中有一道题目:已知"int a=4,b=5,c;",则执行表达式"c=a=a>b后变量a的值为( ) A 0 B 1 C 4 D 5
本人新手,求高手,不会的酒别来迷糊我了,谢谢
C语言中有一道题目:已知"int a=4,b=5,c;",则执行表达式"c=a=a>b后变量a的值为( ) A 0 B 1 C 4 D 5本人新手,求高手,不会的酒别来迷糊我了,谢谢
这个涉及到C语言的单目运算符优先级与结合性的知识:
优先级:
在表达式中,优先级较高的先于优先级较低的进行运算.而在一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理.
结合性:
C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左).例如算术运算符的结合性是自左至右,即先左后右.如有表达式x-y+z 则y 应先与“-”号结合,执行x-y 运算,然后再执行+z 的运算.这种自左至右的结合 方向就称为“左结合性”.而自右至左的结合方向称为“右结合性”.
在你的问题中,"="在表达式中是赋值运算符,而在C语言中,赋值运算符是典型的右结合性运算符.如x=y=z,由于“=”的右结合性,应先执行y=z 再执行x=(y=z)运算.
所以,本例就是先计算双目运算符“>”:a>b,因为a=4,b=5,a是小于b的,所以式子计算就变成了c = a = 0,然后再计算a = 0(即a = (a > b)),最后式子就是c = 0, 所以答案选A
具体运算符优先级和结核性请参考:
http://wenku.baidu.com/view/044cc58a6529647d27285242.html