C语言赋值问题

#include<stdio.h>intmain(void){intu=1,v=2,w=3;w==(v=-u);printf("w=%d\n",w);return0;}w... # include<stdio.h>
int main(void)
{
int u = 1, v = 2, w = 3;
w==(v=-u);
printf("w = %d\n", w);
return 0;
}

w的结果为什么是3

w==(v=-u);当v=-u执行后应该是v=-1吧,但w==-1并不成立,按逻辑应该是0才对吧,但运行结果是3,为什么,求解释,谢谢!
展开
 我来答
shaoqi08110820
2012-08-28 · TA获得超过2508个赞
知道大有可为答主
回答量:1514
采纳率:100%
帮助的人:1726万
展开全部
w==(v=-u);
先执行 v=-u v=-1
在执行 w==v 这是个判断语句,不是赋值语句 ,所以w的值不变
更多追问追答
追问
我知道不是赋值语句啊,w==v判断语句,但他们并不相等啊,不成立应该为0吧?
追答
w==v 这个表达式本身的结果是0,但是这个结果没有赋值为w变量,所以w变量还是不变,如果你想赋值就是 w=(w==v)  这才是你要的结果
小安无敌yeah
2012-08-28 · TA获得超过972个赞
知道小有建树答主
回答量:158
采纳率:0%
帮助的人:128万
展开全部
==不是赋值号,它是等于号,所以v=-u的值并没有赋给w,w的值仍为3
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8fbee656e8
2012-08-28 · TA获得超过1328个赞
知道小有建树答主
回答量:578
采纳率:68%
帮助的人:187万
展开全部
大姐.==是条件运算符,没有判断后,又把判断的结果赋值给本身的功能。
你是不是想看这种
printf("w=%d\n",w==(v=-u));
追问
- -!我是男的。懂了。不过你回答的晚了一些。谢谢!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tocoreclp
2012-08-28
知道答主
回答量:10
采纳率:0%
帮助的人:9930
展开全部
因为你写的是双等号,双等号意思为判断是否相等,本身变量的值是不会改的
追问
嗯。懂了。谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
周生008
2012-08-28 · TA获得超过1222个赞
知道小有建树答主
回答量:1329
采纳率:0%
帮助的人:643万
展开全部
因为并没有给w重新赋值,所以它的值不变。虽然有逻辑判断,但是结果并没有赋给w
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
淡温的棋
2012-08-28 · TA获得超过566个赞
知道小有建树答主
回答量:662
采纳率:0%
帮助的人:287万
展开全部
虽然w==-1,是0但这个值并没有赋给任何一个变量,所以W还是3
按照你说的应该是w=(w==(v=-u))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式