执行下列语句的输出结果(C语言题目)
inta,b,c;a=b=c=1;++a||++b&&++c请顺便解释一下,看不懂为什么是这样的。谢谢!...
int a,b,c;
a=b=c=1;
++a||++b&&++c
请顺便解释一下,看不懂为什么是这样的。
谢谢! 展开
a=b=c=1;
++a||++b&&++c
请顺便解释一下,看不懂为什么是这样的。
谢谢! 展开
3个回答
展开全部
++a||++b&&++c
因为&&的优先级比||高,所以上式相当于++a||(++b&&++c)或的两旁只要一个为真整个表达式就是真,所以计算++a后a为2为真,就不再计算逻辑或之后的表达式了,故b与c的值仍是1,如果改为
(++a||++b)&&++c
则a=2,b=1,c=2,逻辑与符号要求两边表达式值都为真时表达式值为真,所以左边(++a||++b)
的逻辑或表达式,++a为2值为值,(++a||++b)表达式为真,b没有参与自增,逻辑与右边++c为2为真,这时才能得出整个表达式值为真,所以a=2,b=1,c=2
希望能够帮到您。
因为&&的优先级比||高,所以上式相当于++a||(++b&&++c)或的两旁只要一个为真整个表达式就是真,所以计算++a后a为2为真,就不再计算逻辑或之后的表达式了,故b与c的值仍是1,如果改为
(++a||++b)&&++c
则a=2,b=1,c=2,逻辑与符号要求两边表达式值都为真时表达式值为真,所以左边(++a||++b)
的逻辑或表达式,++a为2值为值,(++a||++b)表达式为真,b没有参与自增,逻辑与右边++c为2为真,这时才能得出整个表达式值为真,所以a=2,b=1,c=2
希望能够帮到您。
展开全部
a=b=c=1;//赋值
++a||++b&&++c;//设计到两个运算符的意思。||只要前面的为真后面的不执行,
//&&前面的为假后面的不执行。本操作之后a=2,b=1,c=1
++a||++b&&++c;//设计到两个运算符的意思。||只要前面的为真后面的不执行,
//&&前面的为假后面的不执行。本操作之后a=2,b=1,c=1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这么复杂一个程序才5分?main()
{
char n;
int i;
for(i=0;i<13;i++)
{
for(n=i;n<13;n++)
printf("%c",n+65);
printf("*");
for(;n<26-i;n++)
printf("%c",n+65);
printf("\n");
}
printf("*\n");
}
高不太好解释,你自己看吧,看不明白问我。。
{
char n;
int i;
for(i=0;i<13;i++)
{
for(n=i;n<13;n++)
printf("%c",n+65);
printf("*");
for(;n<26-i;n++)
printf("%c",n+65);
printf("\n");
}
printf("*\n");
}
高不太好解释,你自己看吧,看不明白问我。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询