main() {int m,n=10; m=2&&n++; printf("m=%d,n=%d\n",m,n); } 请问这个程序的运行结果为m=1,n=11
main(){intm,n=10;m=2&&n++;printf("m=%d,n=%d\n",m,n);}请问这个程序的运行结果为m=1,n=11如果把m=2&&n++变...
main()
{int m,n=10; m=2&&n++;
printf("m=%d,n=%d\n",m,n); }
请问这个程序的运行结果为m=1,n=11 如果把m=2&&n++变成m=0&&n++结果为何变成m=0,n=10,n为何等于10呢?求赐教 展开
{int m,n=10; m=2&&n++;
printf("m=%d,n=%d\n",m,n); }
请问这个程序的运行结果为m=1,n=11 如果把m=2&&n++变成m=0&&n++结果为何变成m=0,n=10,n为何等于10呢?求赐教 展开
展开全部
这个题目有2点需要注意:
1.逻辑运算符号优先级比赋值运算符优先级高,即m=2&&n++;实际上是m=(2&&n++);而逻辑运算的结果只有0和1,其中2和n++都是非0值,所以结果为1,n++得到11
2.&&也称为短路运算符,因为0&&任意值都=0,所以0&&后面的表达式会被系统省略运算以节约资源,即被短路,不会运算,保留原值
所以m=0&&n++的值为0,并且n值不会+1
1.逻辑运算符号优先级比赋值运算符优先级高,即m=2&&n++;实际上是m=(2&&n++);而逻辑运算的结果只有0和1,其中2和n++都是非0值,所以结果为1,n++得到11
2.&&也称为短路运算符,因为0&&任意值都=0,所以0&&后面的表达式会被系统省略运算以节约资源,即被短路,不会运算,保留原值
所以m=0&&n++的值为0,并且n值不会+1
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
m=2&&n++ 中(2&&n++)是一个逻辑运算的表达式
结果只会是0或1 如果m 和(n++)都不等于0 则为1
只要有一个为0 就为0 如果m=0 判断为假后就不会继续执行了 n++没做
n++就是n+1,于是结果就会出现上面的现象了
需要说明的是(n++)其实表示的值就是n
因为这个语句是先赋值再加一的
结果只会是0或1 如果m 和(n++)都不等于0 则为1
只要有一个为0 就为0 如果m=0 判断为假后就不会继续执行了 n++没做
n++就是n+1,于是结果就会出现上面的现象了
需要说明的是(n++)其实表示的值就是n
因为这个语句是先赋值再加一的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为m=2&&n++是一个逻辑判断 ,由于M=2是为真 在执行n++而m=0&&n++时,m=0时为假 不执行后面的n++
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
m=2&&n++时,m="非0"并"非0"="非0"(1),n++
m=0&&n++时,m="0"时这句话已结束,不再向后面执行
m=0&&n++时,m="0"时这句话已结束,不再向后面执行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询