1.逻辑运算符与逻辑表达式
逻辑运算符!、&&、||依次为逻辑非、逻辑与和逻辑或。
逻辑非的优先级高于算术运算符,逻辑与和逻辑或的优先级低于关系运算符
逻辑表达式的值只有真和假,对应1和0
【例】
#include<stdio.h>
#include<stdilib.h>
int main(){
int i=0,j=1;
while(scanf("%d",&i))
{
if(i%4==0&&i%100!==0||i%400==0)
{
printf("i is leap year\n");
}else{
printf("i is not leap year\n");
}
}
i=!!j;
printf("i的值=%d\n",i);
return 0;
}
针对逻辑非 ,先给变量j赋值为10,因为j的值非0;所以 !j 的值为0;
然后,由于逻辑非是单目运算符,结合顺序为从右至左,得到 !!j 的值为1;
所以说,对0取非==1;对非零数取非==0;
下面我们看一个短路运算的例子
#include<stdio.h>
int main(){
int i=0;
i&&printf("you can't see me \n");
return 0;
int i=1;
i||printf("you can't see me \n");
return 0;
}
逻辑与(&&)短路运算是,当前面一个表达式1为假的时候,后面的表达式2不执行了。
逻辑或(| |)短路运算是,当前面一个表达式1为真的时候,后面的表达式2不执行了。
2.赋值运算符
左值(L-value)
a=b+25;
这里a是左值,标识了可以存储结果值的地点;
b+25是一个右值,因为它指定了一个值;
!!不能互换
a可以换到右边
但是b+25不能是左值(因为它无法标识一个特定位置【内存空间】)所以,是非法的。
#include<stdio.h>
int main( ){
int a=1,b=2;
b+25=a;
return 0;
}
3.求字节运算符 sizeof
用来求常量或变量所占用的空间大小:
#include <stdio.h>
int main()
{
int i=0;
printf("i size is %d\n",sizeof(i));
return 0;
}
结果为i size is 4 可以知道整型int占用空间大小是4个字节。