C语言操作符详解(5)

83 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第18天,点击查看活动详情

条件操作符

exp1 ? exp2 : exp3

条件操作符通常由3个表达式构成!又叫(三目操作符)! 如果exp1表达式结果为真,执行exp2,否者执行exp3 可以看到与我们的判断语句if类似!

#include<stdio.h>
int main()
{
   int a=5,b=3,max=0;
   //if判断语句求最大值
	if(a>b)
	{
	 max=a;
	}
	else
	{
	 max=b;
	}
	//条件表达式
	a>b?max=a:max=b;
return 0;
}

可以看到条件表达式的优点,可以大大的简化代码!

逗号表达式

exp1,exp2,exp3...expN

表达式之间用,分隔开,这就是逗号表达式。 表达式特点

#include<stdio.h>
int main()
{
	int a=2,b=3,c=5;
	int i=(a++,b++,c);
	printf("a=%d b=%d c=%d i=%d",a,b,c,i);
return 0;
}

在这里插入图片描述 可以看到表达式i=(a++,b++,c);结果i=5也就是最后一个表达式c的值。 逗号表达式运算特点: 表达式从左往右依次计算,最后一个表达式的值,便是整个逗号表达式结果的值!

其他操作符

[]下标引用操作符 ()函数调用操作符 . ->结构成员访问操作符

[]下标引用操作符

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

int arr[10];//创建数组
    arr[9] = 10;//实用下标引用操作符。
      // [ ]的两个操作数是arr和9。

既然是两个操作数,那么两个操作数可以交换位置吗? 在这里插入图片描述 可以看到arr[9]等价9[arr] 但是我们并不介意用9[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;
    }

. :结构体.成员名 -> :结构体指针->成员名

#include <stdio.h>
struct Stu
{
    char name[10];
    int age;
    char sex[5];
    double score;
};
void set_age1(struct Stu stu)
{
    stu.age = 18;
}
void set_age2(struct Stu* pStu)
{
    pStu->age = 18;//结构成员访问
}
int main()
{
    struct Stu stu;
    struct Stu* pStu = &stu;//结构成员访问
    
    stu.age = 20;//结构成员访问
    set_age1(stu);
    
    pStu->age = 20;//结构成员访问
    set_age2(pStu);
    return 0;
}