C语言结果 int a=5,b=6,c=7,d=8,m=2,n=2; (m=a>b)&&(n=c>d); printf("%d",n); 为什么n=2?不是0?

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 21:32:36
C语言结果 int a=5,b=6,c=7,d=8,m=2,n=2; (m=a>b)&&(n=c>d); printf(
xJQ_e=^t;x a`[ X3ôO^ 3ӅO׷ުPk[9/Gi|2e8qIm.Eis 0'xOn7w ʲZ?I 䝞/BF +4@V̩I~'T wrsj~fPg˔t)̮85znt?'A

C语言结果 int a=5,b=6,c=7,d=8,m=2,n=2; (m=a>b)&&(n=c>d); printf("%d",n); 为什么n=2?不是0?
C语言结果 int a=5,b=6,c=7,d=8,m=2,n=2; (m=a>b)&&(n=c>d); printf("%d",n); 为什么n=2?不是0?

C语言结果 int a=5,b=6,c=7,d=8,m=2,n=2; (m=a>b)&&(n=c>d); printf("%d",n); 为什么n=2?不是0?
这个是短路的概念、
因为m=a>b这个为假的,所以值为0,0并且任何一个值都为假,所以电脑会跳过后面的语句.
所以n=c>d这条语句是没有做的.
所以表达式为0;
然而N的值没有改变
这个并且和或的关系的时候,会产生短路.