这个c程序中m怎么等于0,n怎么等于2啊

#include <stdio.h>
main()
{
int a,b,c,d,m,n;
a=5,b=7,c=3,d=8,m=2,n=2;
(m=a>b)&&(n=c>d);
printf("a=%d,b=%d,c=%d,d=%d,m=%d,n=%d",a,b,c,d,m,n);
getch();

}

第1个回答  2011-04-07
(m=a>b)&&(n=c>d);
a>b返回0,m == 0,因为&&已经不成立,后面会自动跳过,所以n不变,你测试下,||也有相同的用法,第一个成立,第二个就跳过
第2个回答  2011-04-07
你要n的输出值是2 还是这个程序的结果是2
第3个回答  2011-04-07
关键在 (m=a>b)&&(n=c>d); 这一句
&&运算符是从左到右计算的。
由于a>b 为假,即0,所以m=0
既然&&左边为假,那整个表达式就肯定为假了,所以他不会计算右边的表达式。
也就是说 (m=a>b)&&(n=c>d); 这一句只执行了 (m=a>b) 这一部分。那结果就很明显了。
第4个回答  2011-04-07
这个是因为a>b为假所以返回的值为0(c语言中0表示假);所以m=0;
而c>d为真。所以n的值没有改变还是2

这个c程序中m怎么等于0,n怎么等于2啊
关键是这句:(m=a>b)&&(n=c>d);这本身是个逻辑表达式,所以先计算左边括号中的表达式的值,即m = a > b。因为逻辑运算符>的优先级高于赋值运算符=,所以先求a > b的值。而a = 5, b = 7,所以a > b不成立,逻辑运算结果为0,再把0赋值给m。所以m的值会是零,而且整个表达式(m ...

c语言(m=a>b)&&(n=c>d),a=5,b=6,c=7,d=8,m=2,n=2,运算后m= ,n=...
a>b = 0, 后面是与运算,到此程序应该结束,表达式为0。最后结果:m=0, n=2

m=2, n=2时,怎么实现?
m=0,n=2。

if(b==0)m=1;n=2;在C语言中怎么错?
if(b==0){ m=1;n=2;} 就是当b等于0时 执行对m赋值1和对n赋值2的语句 if(b==0){ m=1;} n=2;就是当b等于0时 执行对m赋值1的操作,b不等于0时不执行对m的赋值操作,而是直接执行下一个对n赋值的操作

C语言中m=3,n=2,m--=,n++=?
这个表达式中,变量 m 被减 1,变量 n 被加 1,并且在这两个变量前面有一个后置递增和递减运算符。根据 C 语言中运算符的优先级,递增和递减运算符的优先级是高于赋值运算符的,因此表达式的值是变量 m 的初始值 3 和变量 n 的初始值 2,也就是表达式的值为 2。具体的过程是:表达式先求出 ...

在C语言中,m!=0这个m!代表的是什么啊?
不是(m!) = 0 而是 m (!=) 0 != 就是”不等于” 判断 判断m是不是 不等于 0

c语言中n=() m=()的意思
大写字母C,下标n,上标m,表示从n个元素中取出m个元素的不同的方法数.如从5个人中选2人去开会,不同的选法有C(5,2)=10种。C(n,m)的计算方法是C(n,m)=n!\/[m!(n-m)!]=n*(n-1)*...*(n-m+1)\/[1*2*...*m],如C(5,2)=[5*4]\/[1*2]=10。

if(b==0) m=1;n=2;这个为什么不能看成c语言的语句?什么样的才能算一...
这个两个语句。if(b==0) m=1; \/\/第一个 n=2; \/\/第二个 改成下面这样,就是一个语句了。if(b==0) {m=1;n=2;} \/\/加上了一对{}。

C语言中,m=0 A=(++m)+(++m); 此时,A=?,m?
这个和编译器自身处理过程有关系,不同的编译器,结果不尽相同,不必过于纠结。比如 A = (++a) + (++a) + (++a);有些编译器会先计算右边,最后赋值给A:++a;++a;++a;A=a+a+a;有些编译器实际的过程变成:A=++a; A=A+(++a);A=A+(++a);有些编译器实际的过程变成:A=(++a)+(...

在C语言中为什么执行过 #define N 2 #define M N+1 #define NUM (M+1...
宏只是字符串替代一样的,没有计算过程 所以 define NUM (M+1)*M\/2 展开后NUM是(2+1+1)*2+1\/2 要得到你想要的结果 把后面的M括起来,所以宏里面要尽量加多点括号 define NUM (M+1)*(M)\/2 现在在C++还有一种处理就是用inline函数或者const常量 ...

相似回答
大家正在搜