简单的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才对。但结果不是这样,很想不通。。。 展开
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才对。但结果不是这样,很想不通。。。 展开
1个回答
2016-12-24 · 知道合伙人教育行家
天雨下凡
知道合伙人教育行家
向TA提问 私信TA
知道合伙人教育行家
采纳数: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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询