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; }
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; }
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; }
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; }
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; }
(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; }