操作符:
关系操作符:
= < <= !=(用来测试不相等) ==(用来测试相等)
小tips:在编程过程中,注意==和=不小心写错。
逻辑操作符:&&:逻辑与 ||:逻辑或
小tips:注意逻辑与/逻辑或和按位与/按位或的的区别是:逻辑操作只是判断该数或者表达式本身的逻辑值是真还是假,而按位与/按位或是将该数的二进制进行位与/位或的操作。
举例如下:
#include<stdio.h>
int main()
{
printf("%d\n", 1 & 2);//将1的二进制和2的二进制按位与
printf("%d\n", 1 | 2);//将1的二进制和2的二进制按位或
printf("%d\n", 1 && 2);//将&&左右两边的条件进行判断,同为真,即为真,一假,则为假
printf("%d\n", 1 || 2);//将||左右两边的条件进行判断,一真则为真,全假才是假
return 0;
}
0
3
1
1
注意:逻辑操作符与,在使用过程中,左边的值判断为假,则右边的表达式不再进行运算,只进行左边的。
举例如下:
#include<stdio.h>
int main()
{
int i = 0, a = 0, b = 2, c = 3, d = 4;
i = a++ && ++b && d++;//a++结果是假,则只执行a++
printf(" a=%d\n b=%d\n c=%d\n d=%d\n",a, b, c, d);
return 0;
}
a=1
b=2
c=3
d=4
同样的,逻辑操作符或,在使用过程中,左边判断值为真,则右边表达式不再进行运算,只进行左边的
举例如下:
#include<stdio.h>
int main()
{
int i = 0, a = 0, b = 2, c = 3, d = 4;
i = a++ || ++b || d++;//判断||左边a++是假,则进行++b,++b是真,不再进行d++
printf(" a=%d\n b=%d\n c=%d\n d=%d\n", a, b, c, d);
return 0;
}
a=1
b=3
c=3
d=4
条件操作符:exp1 ? exp2 : exp3 其含义为:如果表达式1为真,则执行表达式2,此时表达式2的结果为整个表达式最终的结果,如果表达式2为假,则执行表达式3,此时表达式3的结果为整个表达式最终的结果。
举例:
#include<stdio.h>
int main()
{
int a = 3, b = 4,max;
max=a > b ? a : b;//如果a>b,则max为a,否则为b,注意这里是冒号不是分号。
printf("%d\n", max);
return 0;
}
4
逗号表达式:exp1,exp2,exp3,expN,逗号表达式,就是用逗号隔开的多个表达式,逗号表达式,从左往右依次执行,整个表达式的结果是最后一个表达式的结果。
举例如下:
int a = 1,b=2,c=(a>b,a=b+10,b=a+1);
printf("%d\n", c);
13
小tips:从左往后依次执行,最后一个表达式的结果即为最终结果,而不是只执行最后一个表达式。
那么逗号表达式有什么作用呢?它的作用为在某些特定的场景下,能够使用简便的代码实现功能,将代码量缩减。
举例如下:
int a;
a = get_val();
count_val(a);
while (a > 0)//代码1
{
a = get_val();
count_val(a);
}
while (a = get_val(), count(a), a > 0)//代码2:使用逗号表达式
{
}
下标引用操作符:操作数:一个数组名+一个索引值
举例如下:
int arr[10]={0};
arr[4] = 10;//[]的两个操作数是arr和4
函数调用操作符:接受一个或者多个操作数,第一个操作数是函数名,剩余的操作数就是传递给函数的参数。
举例如下:
int get_max(int x, int y)
{
return (x > y ? x : y);
}
int main()
{
int a = 10, b = 20,max;
max = get_max(a, b);//()函数调用操作符:函数名+若干个函数参数。
printf("max=%d", max);
return 0;
}
20
访问一个结构的成员:
.结构体.成员名 ->结构体指针->成员名
举例如下:
struct stu //创建一个结构体类型 struct stu
{
char name[20]; //描述成员的相关变量
int age;
char id[100];
}; //分号不要丢掉
int main()
{
struct stu student1 = { "易烊千玺",22,"2110044120" }; //使用struct stu这个类型创建了一个学生对象s1,并初始化
printf("%d\n", student1.age); //输出对应结构体成员的信息
printf("%s\n", student1.name);
printf("%s\n", student1.id);
return 0;
}
20
易烊千玺
2110044120
下面我们使用指针的方法对成员信息进行访问:
第一种:
struct stu
{
char name[20];
int age;
char id[100];
};
int main()
{
struct stu student1 = { "易烊千玺",22,"2110044120" };
struct stu* ps = &student1; //定义一个结构体指针指向student1
printf("%d\n", (*ps).age); // *ps就相当于student1
printf("%s\n", (*ps).name);
printf("%s\n", (*ps).id);
return 0;
}
22
易烊千玺
2110044120
第二种:
struct stu
{
char name[20];
int age;
char id[100];
};
int main()
{
struct stu student1 = { "易烊千玺",22,"2110044120" };
struct stu * ps = &student1;
printf("%d\n", ps->age); //使用结构体指针操作符对其进行访问:结构体指针->成员名
printf("%s\n", ps->name);
printf("%s\n", ps->id);
return 0;
}
22
易烊千玺
2110044120
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/81552.html