操作符之关系操作符,逻辑操作符,条件操作符,逗号表达式,下标引用操作符,函数调用操作符,访问结构体成员操作符

简介: 操作符之关系操作符,逻辑操作符,条件操作符,逗号表达式,下标引用操作符,函数调用操作符,访问结构体成员操作符

操作符:

关系操作符

= < <= !=(用来测试不相等) ==(用来测试相等)


小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
相关文章
|
9月前
|
存储 C++
C/C++中位操作符(&,|,^,~)的详解使用
C/C++中位操作符(&,|,^,~)的详解使用
|
7月前
|
SQL 数据库
IN 操作符
【7月更文挑战第14天】IN 操作符。
45 10
|
8月前
|
索引
操作符,详细讲解
操作符,详细讲解
|
9月前
|
编译器 C语言 C++
操作符详解2(二)
本文介绍了编程中的操作符转换和表达式解析规则。当操作数类型不同时,会进行寻常算术转换,按照long double、double、float等类型顺序进行向上转换。表达式求值时,虽然操作符有优先级,但不能决定操作数的求值顺序,例如`a*b + c*d + e+f`中乘法先于加法,但具体计算顺序不确定,可能导致不同结果。同样,如`c++ + c--`这样的表达式也是有歧义的,因为++和--的左右结合性不能确定操作数的获取顺序。文章强调,复杂的表达式可能因编译器差异产生不同结果,应避免使用可能导致非唯一计算路径的表达式以减少潜在风险。
67 0
|
存储 C语言
【C语言】 条件操作符 -- 逗号表达式 -- []下标访问操作符,()函数调用操作符 -- 常见关键字 -- 指针 -- 结构体
【C语言】 条件操作符 -- 逗号表达式 -- []下标访问操作符,()函数调用操作符 -- 常见关键字 -- 指针 -- 结构体
|
编译器 C语言 索引
S5——C操作符详解,你都知道吗? 下
讲解主要内容: 1. 各种操作符的介绍 2. 表达式求值 以下让我们开始正式重新认识和理解操作符吧!
|
9月前
|
编译器 C++ 索引
C learning_13 操作符前篇(条件操作符、 逗号表达式、 下标引用、函数调用和结构成员、 表达式求值)
C learning_13 操作符前篇(条件操作符、 逗号表达式、 下标引用、函数调用和结构成员、 表达式求值)
|
存储 索引
操作符详解(2)
操作符详解(2)
66 0
|
编译器 C语言
【C语言初阶】带你轻松玩转所有常用操作符(3)——关系操作符,逻辑操作符,条件操作符,逗号表达式
【C语言初阶】带你轻松玩转所有常用操作符(3)——关系操作符,逻辑操作符,条件操作符,逗号表达式
133 0
【C语言初阶】带你轻松玩转所有常用操作符(3)——关系操作符,逻辑操作符,条件操作符,逗号表达式
|
C语言
【C语言】 操作符(下): -- 条件操作符 --逗号表达式 -- 下标引用操作符 --表达式求值2
【C语言】 操作符(下): -- 条件操作符 --逗号表达式 -- 下标引用操作符 --表达式求值2