简单的c语言逻辑运算符问题

#include<stdio.h>main(){intk=20,m;m=(3<5)&&(k=0);printf("m=%d,k=%d",m,k);}输出结果:m=0,k=... # include <stdio.h>

main()
{
int k = 20, m;

m = ( 3 < 5 ) && ( k = 0 );

printf("m=%d, k=%d" ,m,k);
}

输出结果:m=0, k=0

我的思路是这样,
因为m=0, 所以“m = ( 3 < 5 ) && ( k = 0 )”为假;
因为“(3<5)”为真, 所以“(k=0)”为假。
问题是:
为什么“(k=0)”为假?
我的理解是“0”只是赋予变量“k”的一个值,这个逻辑运算中k=1时就为真,k=0时为什么就是假?输出的结果应该是:m=1, k=0才对。但结果不是这样,很想不通。。。
{
int k = 20, m;

m = ( 3 < 5 ) && ( k = 0 );

printf("m=%d, k=%d" ,m,k);
}

输出结果:m=0, k=0

我的思路是这样,
因为m=0, 所以“m = ( 3 < 5 ) && ( k = 0 )”为假;
因为“(3<5)”为真, 所以“(k=0)”为假。
问题是:
为什么“(k=0)”为假?
我的理解是“0”只是赋予变量“k”的一个值,这个逻辑运算中k=1时就为真,k=0时为什么就是假?输出的结果应该是:m=1, k=0才对。但结果不是这样,很想不通。。。
展开
 我来答
天雨下凡
2016-12-24 · 知道合伙人教育行家
天雨下凡
知道合伙人教育行家
采纳数:17564 获赞数:65148
爱电脑、爱数学、爱音乐; 熟悉VB、C/C++、JAVA; EXCEL与VBA有所研究…… 数学,一些会,一些被忘却……

向TA提问 私信TA
展开全部
k=0是赋值语句,是把0赋值给变量k,然后k的值就变成0了,如果是k==0才是判断。
更多追问追答
追问
m=0不是说明( 3 < 5 ) && ( k = 0 )不成立吗    3肯定小于5, 所以只有 k=0不成立,但

k=1时,m=1。

m=( 3 < 5 ) && ( k = 1 )就成立。

输出结果:m=1, k=1

但为什么k=0时m=0(不成立)?

也就是为什么k=0时,m=0呢?
追答
谁说m的值不是0?
m=(3<5)&&(k=0);
3<5为真,k=0是把0赋值给k,然后k的值变成0,表达式k=0的值也是0,即假,真&&假,结果为假,所以m为假,即0
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式