c语言!!!求解
发布网友
发布时间:8小时前
我来回答
共4个回答
热心网友
时间:2024-10-20 17:21
好,我一步一步的给分析
像这种多重括号的,都要从内向外。对于两个内括号和||来说,要先算括号内的,对于m=a<b,<的优先级高于=(请注意这是一个赋值号,不是等于的意思),所以先算a<b,你可能会问,这怎么算?a<b是一个逻辑表达式,你看它是否成立,显然在这里是成立的!结果为“真”,也就是为1。然后把这个“1”的结果赋给m。这是就有了m=1,此时的1不是定义里面给的a值,而是表达式a<b判断是否成立过后的值!在c语言里面,结果为真就是1,为假就是0。所以如果换成a大于b的话,m的值就为0了!后面个括号同理,所以n的值为0。对于||这个符号,记住,||号左边为真(非0值时),右边的程序不再运行,这个表达式直接就为真(1)了!如果左边为假(0时),那就继续运行右边,右边也为假,那结果就是假(0),而如果右边为真(非0),那结果就是真(1)。本题中||这个表达式的值结果是为1的,所以外面这个括号表达式的结果为1,然后把1这个值赋给a。
你所问的”为什么m不等于b的值呢?”这句话大错特错。在c语言里面,=表示赋值,把=号右边的值赋给左边。==号才是等于,不能混淆!
想让你真正理解这整个式子,所以说得有点啰嗦,把基础打扎实,这些都是最基础的东西,把各个符号的优先级好好看一下。
唉,无聊上百度,结果看到了这个问题就想一定要讲清楚,我刚开始学c的时候对于这些概念也是懵的,边学边总结吧!睡觉觉去的!
热心网友
时间:2024-10-20 17:21
1
m=a<b 成立,m=1
这没什么好说的
a<b 这是一个逻辑表达式,那么这个表达式成立的话它的值就为1,否则就为0,就是所以再将这个1赋值给m,m就为1了, 这跟优先级没有关系。
热心网友
时间:2024-10-20 17:22
m为1,n为6,。因为或运算前面为真,后面就不需要计算了。
热心网友
时间:2024-10-20 17:23
1啊,c的各种预算顺序,照着表就出来了,记住更好!