C语言操作符详细介绍(三)

简介: C语言操作符详细介绍

九、逻辑操作符


&& 逻辑与
|| 逻辑或


1.区分逻辑与和按位与


按位与:1&2----->0

逻辑与:1&&2---->1


2.区分逻辑或和按位或


按位或:1|2----->3

逻辑或:1||2---->1


十、条件操作符(三目操作符)


exp1 ? exp2 : exp3


这个也是三目操作符


     ⭕如果表达式1为真,那么就计算表达式2,表达式2的结果为整个式子的 结果;

     ⭕如果表达式1为假,那么就计算表达式3,表达式3的结果为整个式子的结果。


例:问:将下列式子转化为条件表达式是什么样的?


if (a > 5)
  b = 3;
else 
  b = -3;

答案:


b = (a > 5 ? 3 : -3);


使用条件表达式得到两个数的较大值


#include<stdio.h>
int main(void)
{  
   int a = 0, b = 0, c = 0;
   printf("请输入两个数:\n");
   scanf_s("%d %d", &a, &b);
   c = (a > b ? a : b);
   printf("较大的数为:%d\n", c);
   return 0;
}


十一、逗号表达式


exp1, exp2, exp3, …expN


⭕逗号表达式,就是用逗号隔开的多个表达式。

⭕逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。


int a = 1;
int b = 2;
int c = (a>b, a=b+10, a, b=a+1);//逗号表达式

       上面C的值最后等于13


十二、下标引用、函数调用和结构成员


1. [ ] 下标引用操作符


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


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


2. ( ) 函数调用操作符


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


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


3. 访问一个结构的成员



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


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


十三、操作符的属性


1. 复杂表达式的求值有三个影响的因素


1. 操作符的优先级

2. 操作符的结合性

3. 是否控制求值顺序。

       两个相邻的操作符先执行哪个?取决于他们的优先级。如果两者的优先级相同,取决于他们的结合性。


操作符优先级(表)


image.png

image.png

image.png

image.png

image.png


表格说明

       同一优先级的运算符,运算次序由结合方向所决定。


     😍 简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符


目录
相关文章
|
23天前
|
存储 C语言 索引
【C语言篇】操作符详解(下篇)
如果某个操作数的类型在上⾯这个列表中排名靠后,那么⾸先要转换为另外⼀个操作数的类型后执⾏运算。
|
23天前
|
程序员 编译器 C语言
【C语言篇】操作符详解(上篇)
这是合法表达式,不会报错,但是通常达不到想要的结果, 即不是保证变量 j 的值在 i 和 k 之间。因为关系运算符是从左到右计算,所以实际执⾏的是下⾯的表达式。
|
1月前
|
C语言
C语言操作符(补充+面试)
C语言操作符(补充+面试)
30 6
|
30天前
|
存储 编译器 C语言
十一:《初学C语言》— 操作符详解(上)
【8月更文挑战第12天】本篇文章讲解了二进制与非二进制的转换;原码反码和补码;移位操作符及位操作符,并附上多个教学代码及代码练习示例
42 0
十一:《初学C语言》—  操作符详解(上)
|
2月前
|
C语言
五:《初学C语言》— 操作符
本篇文章主要讲解了关系操作符和逻辑操作符并附上了多个代码示例
32 1
五:《初学C语言》—  操作符
|
3月前
|
C语言
C语言逻辑操作符的短路问题
C语言逻辑操作符的短路问题
|
3月前
|
编译器 C语言
【C语言】:中移位操作符,位操作符详运算规则详解
【C语言】:中移位操作符,位操作符详运算规则详解
27 1
|
3月前
|
存储 编译器 C语言
|
3月前
|
存储 C语言 索引
【C语言基础】:操作符详解(二)
【C语言基础】:操作符详解(二)
|
3月前
|
编译器 C语言
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)二
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)二
38 3