C语言逻辑与、或操作符、条件操作符、逗号表达式、下标引用、函数调用、结构体调用操作符

本文详细介绍了C语言中的逻辑与(&&&)、逻辑或(||)操作符,条件操作符,逗号表达式,下标引用操作符,以及函数调用和结构体调用。通过实例展示了这些操作符在编程中的应用和行为特点。
摘要由CSDN通过智能技术生成


前言

C语言逻辑与、或操作符、条件操作符、逗号表达式、下标引用、函数调用、结构体调用操作符的介绍。


一、逻辑与、或操作符

  • && ---- 逻辑与操作符
  • || --------逻辑或操作符
  • 逻辑与、或操作符只在乎真假。1为真,0为假。
  • 与按位与、或的区别就是,按位与、或是二进制位,逻辑与、或只在意数值真假。
#include <stdio.h>

int main()
{
	int a = 5;
	int b = 3;

	int c = a && b; // a、b都为真,所以返回值 c 为 1
	printf("%d\n", c); // 1


	int a1 = 0;
	int b1 = 0;

	int c1 = a1 && b1; // a1、b1都为假,所以返回值 c1 为 0
	printf("%d\n", c1); // 0
	return 0;
}
  • 逻辑与有一个假则为假,都是真才为真。
  • 逻辑或有一个真则为真,都是假才为假。
#include <stdio.h>

int main()
{
	int a = 5;
	int a1 = 0;
	int b = 3;
	int b1 = 0;

	int c = a && b;    // a、b都为真,则 c 为真,c = 1
	int c1 = a && b1;  // a为真,b1为假, 则 c1 为 假, c = 0
	int c2 = a1 && b;  // a1 为假, b为真, 则 c2 为假, c = 0

	int d = a1 || b1;    // a1、b1都为假,则 d 为假,c = 0
	int d1 = a || b1;  // a为真,b1为假, 则 d1 为 真, c = 1
	int d2 = a1 || b;  // a1 为假, b为真, 则 d2 为真, c = 1

	printf("c=%d\n", c); // 1
	printf("c1=%d\n", c1); // 0
	printf("c2=%d\n", c2); // 0

	printf("d=%d\n", d); // 0
	printf("d1=%d\n", d1); // 1
	printf("d2=%d\n", d2); // 1
	
	return 0;
}

逻辑与,若前一个表达式为假,则不计算后一个表达式,直接为假。

#include <stdio.h>

int main()
{
	int i = 0, a = 0, b = 2, c = 3, d = 4;
	i = a++ && ++b && d++;

	// a++ 先参与运算再自增 所以 上式中 a++表达式值为 0
	// 逻辑与操作符,前一个表达式为0, 后面不在计算,直接为假。
	// 所以 a++ && ++b 值为0,且++b不参与运算
	// 同理 0 && d++ 值也为0 且 d++不参与运算


	printf("a=%d\nb=%d\nc=%d\nd=%d\n", a, b, c, d); // 1 2 3 4

	// 若a = 1,则都参与运算结果为 2 3 3 5
	return 0;
}

逻辑或,若前一个表达式为真,则不计算后一个表达式,直接为真。

#include <stdio.h>

int main()
{
	int i = 0, a = 1, b = 2, c = 3, d = 4;
	 i = a++ || ++b || d++;

	// a++ 先参与运算再自增 所以 上式中 a++表达式值为 1
	// 逻辑或操作符,前一个表达式为1, 后面不在计算,直接为真。
	// 所以 a++ || ++b 值为1,且++b不参与运算
	// 同理 1 || d++ 值也为1 且 d++不参与运算


	printf("a=%d\nb=%d\nc=%d\nd=%d\n", a, b, c, d); // 2 2 3 4

	// 若a = 0; 则 a++ 和 ++b 参与运算, d++不参与运算 结果为 1 3 3 4
	return 0;
}

二、条件操作符

  • 条件操作符又叫三目操作符
  • 格式为: 表达式1 ? 表达式2 : 表达式3
  • 表达式1为真,则执行表达式2,整个语句结果为表达式2的值
  • 若表达式1为假,则执行表达式3,整个语句结果为表达式3的值
#include <stdio.h>

int main()
{
	int a = 5;
	int b = 3;

	int c = a > b ? a : b; // 若 a > b 则 c = a, 否则, c = b;
	printf("%d\n", c); // 5
	return 0;
}

三、逗号表达式

  • 逗号表达式结果为最后一个表达式的值。
#include <stdio.h>

int main()
{
	int a = 5;
	int b = 3;

	int c = (a + b, a = a / 5, b = b - 5, b + a); 
	// (不影响a、b的值, a = 1, b = -2, -2 + 1 )最后一个表达式的值为-1 结果为-1
	printf("%d\n", c); // -1
	return 0;
}

四、下标引用操作符

  • 下标引用操作符----------[]。
  • 下标引用操作符一般操作的是数组。
  • 下标引用操作符的操作数为 数组名,下标。
  • arr[7] 也可写成 7[arr]。 但不推荐。
#include <stdio.h>

int main()
{
	int arr[10] = { 0 };

	// arr[7] ---> *(arr+7) ---> *(7+arr) ----> 7[arr]
	arr[7] = 5;
	//
	//  arr 是数组首元素地址
	//  7 指的是 arr + 7,即首元素地址加 7 即第 8 个元素的地址
	//  arr[7] = 5 本质上是 *(arr + 7) = 5, 即第 8 个元素修改为5
	
	5[arr] = 3;

	printf("%d\n", arr[7]); // 5
	printf("%d\n", 5[arr]); // 3
	return 0;
}

五、函数调用操作符

  • 函数调用操作符-----()
  • 函数调用操作符不能省略
  • 函数调用操作符的操作数函数名,参数
  • 函数调用操作符的操作数至少为 1,即函数名
#include <stdio.h>
// 函数定义
int Add(int x, int y)
{
	return x + y;
}

int main()
{
	int a = 5;
	int b = 3;
	// 函数调用
	int c = Add(a, b); // 函数调用操作符()不能省略, 此时操作数为3
	printf("%d", c); // 8
	return 0;
}

六、结构体调用操作符

  • “·” 结构体.成员名
  • “->” 结构体指针->成员名
#include <stdio.h>
#include <string.h>

// 创建结构体类型
struct stu 
{
	char name[20];
	int age;
	double score;
};

void set_stu(struct stu* ps)
{
	/*strcpy((*ps).name, "zhangsan");
	(*ps).age = 20;                        // 结构体对象.成员
	(*ps).score = 100.00;*/


	strcpy(ps->name, "zhangsan");
	ps->age = 20;                          // 结构体指针->成员
	ps->score = 100.00;
}

void print_stu(struct stu ss)
{
	printf("%s %d %lf", ss.name, ss.age, ss.score); // zhangsan  20  100.000000
}
int main()
{
	struct stu s = { 0 };

	set_stu(&s);
	print_stu(s);
	return 0;
}

总结

C语言逻辑与、或操作符、条件操作符、逗号表达式、下标引用、函数调用、结构体调用操作符的介绍。

  • 19
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值