为何执行这个程序的时候会出错
为什么执行这个程序的时候会出错
#include <stdio.h>
void main ()
{
int a=0,flag;
flag=((a!=0)&(5/a==1));
printf("%d\n",flag);
}
但如果是换成这样子了就不会出错了:
#include <stdio.h>
void main ()
{
int a=0,flag;
flag=((a!=0)&&(5/a==1));
printf("%d\n",flag);
}
------解决思路----------------------
if(a && b){}
a如果是false,直接跳过if语句,不会执行b。
flag=((a!=0)&&(5/a==1));
a!=0 这句返回false,&&之后的(5/a==1)就不会执行了,所以程序没问题。
((a!=0)&(5/a==1))
按位与运算,执行完a!=0后再执行5/a==1,执行5/a 时CPU就引发除0硬件异常。
#include <stdio.h>
void main ()
{
int a=0,flag;
flag=((a!=0)&(5/a==1));
printf("%d\n",flag);
}
但如果是换成这样子了就不会出错了:
#include <stdio.h>
void main ()
{
int a=0,flag;
flag=((a!=0)&&(5/a==1));
printf("%d\n",flag);
}
------解决思路----------------------
if(a && b){}
a如果是false,直接跳过if语句,不会执行b。
flag=((a!=0)&&(5/a==1));
a!=0 这句返回false,&&之后的(5/a==1)就不会执行了,所以程序没问题。
((a!=0)&(5/a==1))
按位与运算,执行完a!=0后再执行5/a==1,执行5/a 时CPU就引发除0硬件异常。