算法随记:
1.关于逻辑非的两种使用情况其中一个: !布尔类型表达式
!布尔类型表达式:上方出的值d必然为错的下面if里面的条件才能执行,如果上面d是对的,下面的条件也需要改成对的
2.判断闰年
判断闰年有两个条件:
(1)年份能被400整除,比如2000年
(2)年份能被4整除但是不能被100整除,比如2008年
通过以上两个条件得知代码
(1)year % 400 == 0 ;
(2)year % 4 == 0 ; year %100 !=0;
条件1或者2只要有一个可以满足就行,但是条件2是两个必须都要满足才行,所以:
(year % 400 ==00) || (year % 4 == 0 && year %100 !=0)//这里注意逻辑与的优先级要高于逻辑或
示例代码:
笔记强化:
1.补充昨天关于运算符的知识
首先对于运算符的概念:
{1}一元运算符:只需要一个操作数就可以完成的运算,称之为一元运算符
{2}二元运算符:需要两个或者两个以上的操作数才能完成运算的操作符,称之为二元运算符
一元运算符的优先级高于二元运算符和三元运算符
{3}三元运算符
1)?: str = 1>2? "ok" : "not ok"; 1>2如果成立,那么选ok对str进行判断,不成立则反之 2)??判断非空 语法:操作数左 ?? 操作数右 左边不为空返回左边的操作数,反之右边
(1)二元运算符
{1}算数运算符
=由等号连接的表达式称之为赋值表达式,作用是将等号右边的值赋值给左边的变量
算数运算符
+:相加或者连接作用
-
*
/
%:取模【求余数】
{2}关系运算符【表示两个事物之间的关系,由关系运算符连接起来的表达式称之为关系表达式】
> < >= <= ==【一个等号表示赋值,两个等号表示相等】 !=
在关系运算符中,有一种常用的数据类型【关系表达式的结果就是bool类型的值,所以一般也就声明bool类型的值来接收对与错】
bool类型,它的作用【值】是描述对【true】或者错【false】
比如例子:
bool a = 1000>1;
console.writeline(a);
console.readkey();
a的值就是false,也就是错的
补充:除了可以正常判断以外,关系表达式的产生的值都是bool类型的,只会产生对与错,如果想获得判断后的值,那么就声明一个bool类型的变量去接收即可
{3}逻辑运算符【由逻辑运算符连接的表达式称之为逻辑表达式】
【单个的逻辑运算符不常用,因为效率低会计算另外一个表达式是错还是对的】逻辑运算符两边放的表达式一般是关系表达式或者bool类型的值,所以同样逻辑表达式的结果也是bool类型的值,逻辑与的优先级要大于逻辑或
&&逻辑与:两边有一个不成立,就都不对【另一边不执行】,返回false,如果都对则返回true
语法:关系表达式或者布尔类型的值 && 关系表达式或者布尔类型的值
||逻辑或:两边只要有一个成立,就算对【另一边不执行】,返回true,如果都错则返回false
语法:关系表达式或者布尔类型的值 || 关系表达式或者布尔类型的值
!逻辑非:本来表达式是对的,然后!一下变成错的,比如某一个值不等于xx,如果等于了就是错的,不等于就是对的【注意!!一般配合其他关系运算符使用,比如=,也可以自己单独使用,单独使用前需要先将表达式赋值给bool类型的变量】
语法:变量或值!=变量或值
或者:
!通过关系表达式赋给的布尔类型的值
例子:
如果a不等于90,它就是对的,其余都是错的
但是正常情况下
a不等于90都是错的,其余都是对的,等于正好相反
{4}复合赋值运算符
+= -= *= /= %=
例子:
int a = 10;
a+=20;//这个表达式相当于是a = a + 20;的缩写
结果是30,如果没想明白就这么想,将等号右边的20赋值给左边的值,右边的是20,左边的a原值是10,将20赋值过来的时候是加还是减看等于号旁边的符号就行,两种方法都可以
(2)一元运算符【算数运算符】
++:分前++和后++两种,目的都是给这个变量自身加1,区别在于
例子:
++a,前++是先给变量自身加1,然后带着这个加1后的变量去参与运算
a++,后++是先拿原值参与运算,然后运算完成之后再将当前变量自身加1
--:分前--和后--两种,目的都是给这个变量自身减1,区别在于
例子:
--a,前--是先给变量自身减1,然后带着这个减1后的变量去参与运算
a--,后--是先拿原值参与运算,然后运算完成之后再将当前变量自身减1