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/06/28 23:59:57
![C语言结果 int a=5,b=6,c=7,d=8,m=2,n=2; (m=a>b)&&(n=c>d); printf(](/uploads/image/z/1622837-29-7.jpg?t=C%E8%AF%AD%E8%A8%80%E7%BB%93%E6%9E%9C+int+a%3D5%2Cb%3D6%2Cc%3D7%2Cd%3D8%2Cm%3D2%2Cn%3D2%3B+%28m%3Da%3Eb%29%26%26%28n%3Dc%3Ed%29%3B+printf%28%22%25d%22%2Cn%29%3B+%E4%B8%BA%E4%BB%80%E4%B9%88n%3D2%3F%E4%B8%8D%E6%98%AF0%3F)
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的值没有改变
这个并且和或的关系的时候,会产生短路.