77问答网
所有问题
#include<stdio.h> void main() { int a,b,c; a=b=c=1; if (a++||++b) c++; printf("%d,%d,%d\n",a,b,c);
为什么答案是2,1,2?
举报该问题
推荐答案 2014-06-16
你要搞清楚 | 和 || 的区别,||:逻辑或,前后条件只要有一个满足表达式为真,a++||++b,a++先判断,后执行+1,也就是a=1为真,后面++b就不用管,不执行,就是短路性质。
短路现象常见的有,短路与(&&)和短路或(||),若a && b ,如果a 的值为假,则整个表达式的值就为假,它是从左向右计算的。所以执行该表达式后,b 的值还是它的初始值,即不进行运算。若a || b ,如果a 的值为真,整个表达式的值就为真,执行顺序同上。b 的真假由最初的真假来判断,也就是说,当a 为真时,b 则不进行运算了。
回答很辛苦,希望采纳。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://77.wendadaohang.com/zd/YY33YI3qNN3W8G38qWp.html
其他回答
第1个回答 2014-06-16
if语句里面的条件判断都使用 短路法
a++ || ++b 并不是 先判断 a++ ,再执行 ++b
因为 a++后的结果是 1,已经为真,就不再执行 ++b了。
所以,结果为 2 , 1, 2
本回答被提问者和网友采纳
第2个回答 2014-06-16
if (a++||++b) c++;
a++在前,所以当a++为真时,++b被忽略了,因此后者没有计算。
第3个回答 2014-06-16
if(a++||++b)
当a++成立时,++b不执行
追问
为什么?
追答
||短路或
这是基本概念
相似回答
#include
<
stdio.h
>
void
main( )
{
int
a,b,
答:
1、是不执行。2、使用
if
()语句1;语句2; 只有紧跟其后的一条语句属于这个if(),也就是说语句1;是这个if()的,语句2;就不是了。要想使语句2;也属于这个if()需要使用大括号,如下:if(){ 语句1;语句2;} 3、a=10,b=c;使用逗号运行符,算一句。
#include
<
stdio.h
>
main()
{
int
a,b,c;
a=b=c=1;
++
答:
++a||++b
&&
++c;
在这进行 逻辑与 和或 的运算 从右到左 结合 || 左边的表达式为真 右边的就不执行了 所以 ++a 其他的 原初始值 输出 运算结果为a=2
;b=1;c=1
C语言的一道题怎么做?
答:
include
<
stdio.h
> include<stdlib.h>
int
main(){
int
a,b,c;a=b=c=
0;//++a后a=1,1||++b&&++c可以判断||运算符的运算结果肯定为1了,所以++b&&++c不会执行,既b=0,c=0 //所以输出a=1 b=0 c=0 ++
a||++b
&&++c;printf("a=%d\tb=%d\tc=%d\n",a,b,c);//
a++
后a...
c语言,定义一个函数intfun
(inta,intb,
intc)它的功能是若
a,b,c
能构成...
答:
include
<
stdio.h
> int intfun
(int
a,int
b,int
c){
if(a+b<=c||a+c<=b||b+c<=a)/*判断是否能构成三角形*/ return -1; //不构成三角形 else {
if((a==c||a==b||b==c
)&& !(a==c &&
a==b))
/*判断是否为等腰三角形*/ return 2;else
if(a==c
&& a==b)...
...
void
main ()
{
int
a,b,c;
a=1;
b=(a++)
+a;
c=
+
++b
+1; printf...
答:
include
<
stdio.h
>
void
main (){
int
a,b,c;a=1;b=(a++)
+a;//这里a先用,所以相当于b=a+a=2;之后a++,此时a=2
;c=
+
++b
+1;//先对b自加,所以b=3;之后c=+b+1=4,前面的+号相当于正好 printf("%d,%d,%d\n",a,b,c);//输出2,3,4 } ...
C语言编写实现两数相加与比较两数大小!!
答:
include<
stdio.h
>
void
main()
{
int
a,b,c;
a=
123245;
b=
54321; c=a+b; printf("%d\n",c);}
#include
<stdio.h>void main() { int a,b,c; a=123245; b=54321;
if
( a
>
b )
c=a; else
c=b;
printf("%d\n",c);} ...
#include
<
stdio.h
>
void
main(){int
a,b,c;a=1
,
b=
2,
c=
3;printf("%d\n...
答:
答案是0 a=b==c这个表达式是从右向左运算的,也就相当于a
=(b==c)
而b==c这个判断表达式显然是不成立的,所以有一个返回值为0。即,a=0;printf("%d\n"
,a=b==c);
就相当于
a=b==c;
printf("%d\n",a);明白了么?至于2楼说的优先级的问题,显然是错误的,你可以把a打印出来,结果也...
大家正在搜
include iostream
static void main
public void main
voidmain和intmain
c语言include stdio
int main(void)
int main(void)含义
visual studio
main和void main区别
相关问题
#include<stdio.h> void main() ...
问一下 #include<stdio.h> void mai...
#include<stdio.h> void main() ...
有以下程序 #include<stdio.h>main() ...
#include <stdio.h> int main(vo...
#include <stdio.h>void main(){...
以下程序的运行结果是( )。 #include<stdio....
#include <stdio.h> main() { in...