学C的第十六天【操作符详解:9. 条件操作符;10. 逗号表达式;11. 下标引用,函数调用和结构函数;12.表达式求值:整型提升、算术转换、操作符的属性;练习:使用函数完成整型函数的打印、元素逆置】-1

简介: 9. 条件操作符(三目操作符,有三个操作数) exp1 ? exp2 : exp3(表达式1) (表达式2) (表达式3) 真 --> 计算 --> 不计算

9. 条件操作符(三目操作符,有三个操作数)

                   

exp1       ?        exp2      :        exp3

(表达式1)        (表达式2)        (表达式3)

     

                  -->         计算      -->      不计算      

==>         exp2 是整个表达式的结果

         

         -->         不计算      -->       计算

==>         exp3 是整个表达式的结果


(演示代码:)

//三目操作符
#include <stdio.h>
int main()
{
  int a = 0;
  int b = 0;
  if (a > 5)
  {
    b = 3;
  }
  else
  {
    b = -3;
  }
  //第一种写法:
  (a > 5) ? (b = 3) : (b = -3);
  //第二种写法:
  b = ((a > 5) ? (3) : (-3));
  return 0;
}


f2c92e5b37d44b00bd67b2cce6e91f09.png

10. 逗号表达式

                         

逗号表达式:用逗号隔开多个表达式,从左向右依次执行,整个表达式的结果最后一个表达式的结果

                   

exp1      ,       exp2       ,       exp3       ,       ...expN

                     


(演示代码:)

//逗号表达式
#include <stdio.h>
int main()
{
  //代码1:
  int a = 1;
  int b = 2;
  int c = (a > b, a = b + 10, a, b = a + 1); //逗号表达式
  //代码2:
  int a = 1;
  int b = 2;
  int c = 2;
  int d = 0;
  if (a = b + 1, c = a / 2, d > 0)
  //代码3:
  a = get_val();
  count_val(a);
  while (a > 0)
  {
    //业务处理
    a = get_val();
    count_val(a);
  }
  //使用逗号表达式进行改写:
  while (a = get_val(), count_val(a), a > 0)
  {
    //业务处理
  }
  return 0;
}

c069244f157141719a7881cff303a96d.png

11. 下标引用,函数调用和结构函数

1. [] :        下标引用操作符

             

(操作数:一个数组名 + 一个索引值


(演示代码:)

// []:下标引用操作符
#include <stdio.h>
int main()
{
  int arr[10] = { 1,2,3,4,5 };
  // 下标:    0 1 2 3 4
  //数组的起始是有下标的,下标是从0开始的
  printf("%d\n", arr[2]);
  return 0;
}

e8fb2fbdcf6a41b7ba288642d0356e8d.png

2. () :       函数调用操作符

       

(接受1个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数

                 

(演示代码:)

// (): 函数调用操作符
#include <stdio.h>
int Add(int x, int y)
{
  return x + y;
}
int main()
{
  int c = Add(3, 5); // 函数调用操作符
  printf("%d", c);
  return 0;
}

decfb7f64d0c4812b5bed161432d542c.png


3. 访问一个结构的成员

                     

(3.1)        .   :         结构体.成员名

//访问结构成员
#include <stdio.h>
//创建一个结构体(类似java中的类)
struct Book //使用struct创建结构体
{
  //定义成员
  char name[30]; //书名
  char author[20]; //作者
  float price; //价格
}; //结尾要加分号
int main()
{
  //一本书:
  struct Book b1 = { "C语言第一课", "张三", 66.5f };
  //另一本书:
  struct Book b2 = { "数据结构第一课", "李四", 66.5f };
  printf("%s %s %.1f\n", b1.name, b1.author, b1.price);
  // . --> 访问结构体成员:结构体变量.成员名
  printf("%s %s %.1f\n", b2.name, b2.author, b2.price);
  return 0;
}

image.png

(3.2)        -> :       结构体指针->成员名

//访问结构成员
#include <stdio.h>
//创建一个结构体(类似java中的类)
struct Book //使用struct创建结构体
{
  //定义成员
  char name[30]; //书名
  char author[20]; //作者
  float price; //价格
}; //结尾要加分号
//写一个打印结构体变量信息的函数
void Print(struct Book * p)
// * 表示 p 是指针变量
// struct Book 表示 指针变量的 类型
{
  //第一种方法:
  printf("%s %s %.1f\n", (*p).name, (*p).author, (*p).price);
  //第二种方法:
  printf("%s %s %.1f\n", p->name, p->author, p->price);
  // 结构指针 -> 成员名
}
int main()
{
  //一本书:
  struct Book b1 = { "C语言第一课", "张三", 66.5f };
  //另一本书:
  struct Book b2 = { "数据结构第一课", "李四", 66.5f };
  //写一个打印结构体变量信息的函数
  Print(&b1);
  //printf("%s %s %.1f\n", b1.name, b1.author, b1.price);
   . --> 访问结构体成员:结构体变量.成员名
  //printf("%s %s %.1f\n", b2.name, b2.author, b2.price);
  return 0;
}


4396151dd8294ffb938f41ebab7d8b6b.png


相关文章
|
7月前
|
存储 编译器 C语言
初始C语言——详细讲解操作符以及操作符的易错点
初始C语言——详细讲解操作符以及操作符的易错点
|
3月前
|
编译器 C++ 索引
C learning_13 操作符前篇(条件操作符、 逗号表达式、 下标引用、函数调用和结构成员、 表达式求值)
C learning_13 操作符前篇(条件操作符、 逗号表达式、 下标引用、函数调用和结构成员、 表达式求值)
|
8月前
|
存储 C语言
【C语言】 条件操作符 -- 逗号表达式 -- []下标访问操作符,()函数调用操作符 -- 常见关键字 -- 指针 -- 结构体
【C语言】 条件操作符 -- 逗号表达式 -- []下标访问操作符,()函数调用操作符 -- 常见关键字 -- 指针 -- 结构体
|
6月前
|
C语言
赋值运算和赋值表达式
赋值运算和赋值表达式。
157 0
|
6月前
|
索引
操作符之关系操作符,逻辑操作符,条件操作符,逗号表达式,下标引用操作符,函数调用操作符,访问结构体成员操作符
操作符之关系操作符,逻辑操作符,条件操作符,逗号表达式,下标引用操作符,函数调用操作符,访问结构体成员操作符
|
6月前
|
编译器 C语言
操作符的属性,C语言中运算符的优先性和结合性,常见的问题表达式
操作符的属性,C语言中运算符的优先性和结合性,常见的问题表达式
|
8月前
|
C语言 索引
【C语言】 操作符(下): -- 条件操作符 --逗号表达式 -- 下标引用操作符 --表达式求值1
【C语言】 操作符(下): -- 条件操作符 --逗号表达式 -- 下标引用操作符 --表达式求值1
|
8月前
|
C语言
【C语言】 操作符(下): -- 条件操作符 --逗号表达式 -- 下标引用操作符 --表达式求值2
【C语言】 操作符(下): -- 条件操作符 --逗号表达式 -- 下标引用操作符 --表达式求值2
|
9月前
|
编译器 C语言 C++
学C的第十六天【操作符详解:9. 条件操作符;10. 逗号表达式;11. 下标引用,函数调用和结构函数;12.表达式求值:整型提升、算术转换、操作符的属性;练习:使用函数完成整型函数的打印、元素逆置】-2
12.表达式求值 1. 表达式求值的顺序一部分是由操作符的优先级和结合性决定。 2. 有些表达式的操作数在求值的过程中可能需要转换为其它类型。
|
9月前
|
存储 编译器 C语言
【C语言】表达式求值相关问题汇总—>隐式类型转换(整型提升)、算数转换与操作符优先级汇总(收藏查阅)
【C语言】表达式求值相关问题汇总—>隐式类型转换(整型提升)、算数转换与操作符优先级汇总(收藏查阅)
73 0