1.关系操作符
\>\>=
<
<=
!= 用于测试“不相等”
== 用于测试“相等”
2.逻辑操作符
&& 逻辑与|| 逻辑或
逻辑与与逻辑或只关注真假,不关注二进制位,非零为真
1&&2---->1 全真则真,一假则假(并且)0 ||2---->0 一真则真,全假则假(或者)
笔试题:
#include <stdio.h>
int main()
{
int i = 0,a=0,b=2,c =3,d=4;
//(2)int i = 0,a=1,b=2,c =3,d=4;
i = a++ && ++b && d++;
//(2)i = a++||++b||d++;
printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
return 0;
}
解析:
(1) 首先执行a++,先使用a,a = 0即为假,则&&后边的表达式不进行计算,然后a自加可以得到 a = 1, b =2 ;c =3 ;d = 4
(2) 首先执行a++,先使用a,a为真,则进行||运算后,结果为真,故||后边不再进行计算,然后a自加可以得到,a = 2, b = 2, c =3, d = 4;
3..条件操作符
表达式1 ? 表达式2:表达式3
逻辑展示:
举例:求两个数最大值
int a = 5;
int b = 8;
max = (a > b ? a : b); //a如果大于b的话会把a赋值给max,如果a不大于b 的话则会把b赋值给max
printf("%d\n", max);
4.逗号表达式
exp1, exp2, exp3, …expN
逗号表达式,就是用逗号隔开的多个表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。
int a = (1, 2, 3, 5); //逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。
//整个表达式的最后是5,5最终赋值给a
printf("%d\n", a);
故可得 a = 5
5.下标引用、函数调用和结构成员
[] () . ->
- [ ] 下标引用操作符
操作数:一个数组名 + 一个索引值
int arr[10] = { 1,2,3,4,5,6,7,8,9,10}; //创建数组
printf("%d\n", arr[5]); //打印数组下标为5的元素
arr[7] ----> (arr+7) ---> (7+arr) ---> 7[arr]
- ( ) 函数调用操作符
#include <stdio.h>
void test1()
{
printf("hehe\n");
}
void test2(const char *str)
{
printf("%s\n", str);
}
int main()
{
test1(); //使用()作为函数调用操作符。
test2("hello bit.");//使用()作为函数调用操作符。
return 0;
}
3.
. 结构体.成员名
-> 结构体指针->成员名
struct stu
{
char name[20];
int age;
};
int main()
{
struct stu s1 = { "李四", 19 };
printf("%s %d\n", s1.name, s1.age); // .是用来访问结构体成员的
return 0;
}
struct stu
{
char name[20];
int age;
};
int main()
{
struct stu s1 = { "李四", 19 };,
struct stu* p = &s1;
printf("%s %d", p->name, p->age); //结构体指针->成员名,打印结构体指针指向的成员
return 0;
}
结果同上