1,基础
关系运算符
<,>,<=,>=,==,!=
1,双目运算符,从左向右结合,值是逻辑值真假
2,关系运算符低于算术运算符,都高于赋值运算符。
3,<,>,<=,>=优先级相同。==,!=优先级相同且低于其他关系运算符
c>a+b c>(a+b) |
a>b==c (a>b)==c |
a==b<c a==(b<c) |
a=b>c a=(b>c_ |
0==1>2 0==(1>2)值为1 |
逻辑运算符
&&,||,!(逻辑非)
1, 值是逻辑值真假
2,高——低 ! && ||
3,&&,||低于关系运算符。!高于关系和算术运算符
4,与表达式,从左向右运算,不符合就结束
a=1,b=2,c=3,d=4,m=n=1,执行(m=a>b)&&(n=c>d)后,m,n的值
a>b为假,m=0——(m=a>b)=0,因为与表达式,不需要计算后面表达式——
则m=0,n=1,表达式=0
5,或表达式,a||b||c,只要a为真,整个表达式为真,不用判定b和c从。A为假,判断b。b为假,判断c
a>b&&x>y (a>b)&&(x>y) |
a==b||x==y (a==b)||(x==y) |
!a||a>b (!a)||(a>b) |
瑞年
1,能被4整除,但不能被100整除
2,能被4整除,又能被400整除
((x%4==0)&&(x%100!=0))||(x%400==0)
条件1 条件2(400整除也可4整除)
条件运算符
Max=a>b?a:b
表达式1?2:3
如果a>b,则Max=a,否则=b
1,条件运算符高于赋值运算符,低于算术和关系运算符
Max=a>b?a:b Max=(a>b?a:b)
2,自右向左结合
a>b?a:c>d?c:d (a>b)?a: ((c>d)?c:d)
3,表达式2,3不仅是数值表达式,也可是赋值表达式或者函数表达式
a>b?(a=100):(b=100)
a>b?printf(“%d\n”,a): printf(“%d\n”,b)
2,Const
https://blog.csdn.net/fxltsbl007/article/details/56302518?spm=1001.2014.3001.5501
Const只是一个修饰符,不管怎么样a仍然是一个int型的变量
const int a;
int const a;
const int *a;
int * const a;
int const * a const;
本质:const在谁后面谁就不可修改,const在最前面则将其后移一位即可,二者等效
前两个的作用是一样,a是一个常整型数。第三个意味着a是一个指向常整型数的指针(也就是,指向的整型数是不可修改的,但指针可以,此最常见于函数的参数,当你只引用传进来指针所指向的值时应该加上const修饰符,程序中修改编译就不通过,可以减少程序的bug)。
第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。
如果应试者能正确回答这些问题,那么他就给我留下了一个好印象。顺带提一句,也许你可能会问,即使不用关键字 ,也还是能很容易写出功能正确的程序,那么我为什么还要如此看重关键字const呢?我也如下的几下理由:
1) 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其 它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。)
2) 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。
3) 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。
const关键字至少有下列n个作用:
(1)欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了;
(2)对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为