你了解逻辑运算符与(&&)、或(||)、非(!)吗?

    技术2022-07-10  153

    1.与运算(&&)

    与运算(&&)又称“简洁与”或者“截断与”,听名字不大能听明白它其中的意思,众所周知,当语句“a&&b”中a为真且b为真时整个语句才为真,其它情况全为假,“简洁与”的意思就是当a语句为假时就不再执行后面的b语句,但是整个语句仍为假;

    举个例子说明一下:

    #include<stdio.h> int mian() { int a=1,b=5,c=5; if(a>1&&b++) { } printf("b=%d\n",b); if(a>=1&&c++) { } printf("c=%d\n",c); return 0; }

    如果不清楚与运算符(&&)的话可能就会认为打印出来的b的值会是6,但是实际打印出来的值仍为5,就是因为与运算是一种简洁与,当&&前面的语句为假时则不再执行后面的语句,只有当“与(&&)”前面的语句为真时才会执行后面的语句,所以c的值为6。

    b=5 c=6

    2.或运算(||)

    或运算(||)同与运算一样也称“简洁或”或者“截断或”,当语句“a||b”中a语句为假且b语句也为假时整个语句才为假,其它情况全为真,那么简洁或的意思就和简洁与的意思相同,即当a语句为真时不再执行后面的b语句,整个语句仍为真;

    同样也来一个例子:

    #include<stdio.h> int main() { int a=1,b=5,c=5; if(a>1||b++) { } printf("b=%d\n",b); if(a>=1||c++) { } printf("c=%d\n",c); return 0; }

    同样的,如果不清楚或运算符的使用,就回认为打印出c的值为6,实则仍为5,因为在这个程序中“或(||)”前面的语句为真,则不再后面的语句,c的值也就不变,只有当“或(||)”之前的语句为假时才执行后面的语句,所以b的值为6.

    b=6 c=5

    3.非(!)

    非运算符通俗来说就是将真的变为假,假的变为真,是一个单目运算符,如:2<5为真则!(2<5)为假,并且在单目运算符中,只有

    “++”和“--”(上一篇博客已经介绍过)运算符可以改变变量的值,那也就是说非(!)运算符是不能改变变量的值的;

    上例子:

    #include<stdio.h> int main() { int a=10; bool t=trul,s=false; //布尔类型,为假时输出0,为真时输出1;所有的0都为假,非0都为真; t=!!a; s=!a; printf("a=%d\nt=%d\ns=%d\n",a,t,s); return 0; } a=10 t=1 s=0

    此程序中a为真,!a为假,则s输出0,!a为假,则!!a为真,t输出1,非运算符不变变量值,则a仍为10.

    优先级

    *****逻辑运算符与其它运算符优先级:赋值运算符(=)  <   &&和||   <   关系运算符    <    算数运算符    <    非(!)

     

     

     

     

     

     

     

     

     

    Processed: 0.015, SQL: 9