C语言逻辑运算符: && 和 ||

1. 简单介绍 && 和 ||

&& 和 || 是逻辑运算符,分别是逻辑与(&&)和逻辑或(||)

1) && (逻辑与):(三种)

① 当逻辑与左边为false(假),则不再进行逻辑与右边的判断,结果为false(假)

② 当逻辑与左边为true(真)则进行右边判断,右边为false(假),结果为false(假)

③ 当逻辑与左边为true(真)则进行右边判断,右边也为true(真),则结果为true(真)

2) || (逻辑或):(三种)

① 当逻辑或左边为false(假),继续逻辑或右边的判断,如果也为false(假),结果为false(假)

② 当逻辑或左边为false(假),继续逻辑或右边的判断,如果为true(真),结果为true(真)

③ 当逻辑或左边为true(真),则不再进行逻辑或右边的判断,结果为true(真)

2. && 和 || 的使用

1) && (逻辑与)

下面通过一个程序进行讲解:

#include <stdio.h>
#include <string.h> // strcmp所在头文件

int main(void) 
{
	char szAccount[] = "account";    // 设置的默认账号
	char szPassword[] = "password";  // 设置的默认密码
	char szEntryAccount[32] = { 0 };  // 输入的账号
	char szEntryPassword[32] = { 0 }; // 输入的密码

	// 获取输入的账号
	printf("请输入账号: ");
	scanf_s("%s", szEntryAccount, 32);

	// 获取输入的密码
	printf("请输入密码: ");
	scanf_s("%s", szEntryPassword, 32);

	// 通过strcmp函数进行比较输入的账号和密码是否跟我们设置的匹配 
	// 通过 &&(逻辑与) 进行判断,当账号和密码都正确才会打印出 "账号密码正确!"
	if (strcmp(szEntryAccount, szAccount) == 0 &&
	    strcmp(szEntryPassword, szPassword) == 0) {
		printf("账号密码正确!");
	}
	else {
		printf("账号或密码错误!");
	}


	return 0;
}

简单简介上面的程序:

定义了一个char(字符型)的数组变量szAccount,并且初始化为 "account"

定义了一个char(字符型)的数组变量szPassword,并且初始化为 "password"

定义了一个char(字符型)的数组变量szEntryAccount,并将数组中的每个元素都初始化为0

定义了一个char(字符型)的数组变量szEntryPassword,并将数组中的每个元素都初始化为0

printf 打印一条提示信息,提示用户输入账号

scanf_s 获取用户输入的数据,然后保存到对应的变量中,此处为szEntryAccount

printf 打印一条提示用户输入密码

scanf_s 获取用户输入的数据,然后保存到对应的变量中,此处为szEntryPassword

strcmp函数是比较两个传入的字符串,如果两个字符串是相同的则返回0(strcmp百度百科)

然后通过 &&(逻辑与)进行比较输入的账号和密码与默认设置的账号和密码比较,如果都相同则打印 "账号密码正确!",如果有其中一个不正确则打印 "账号或密码错误!"

2) || (逻辑或)

#include <stdio.h>

int main(void)
{
	char c;
	char c1;

	do {
		/**
		* 进行输入账号和密码的操作和判断
		**/

		// 此处只是为了清空输入缓冲区
		while ((c1 = getchar()) != EOF && c1 != '\n') {}

		// 密码错误进行是否继续输入进行匹配
		printf("是否继续匹配,继续匹配请输入(y或者Y)\n");
		c = getchar();
	} while ('y' == c || 'Y' == c);

	return 0;
}

简单讲解上面程序:

定义了一个char(字符型)变量c

定义了一个char(字符型)变量c1

do...while循环不断进行账号密码的判断操作

while循环是为了清空输入缓冲区,因为不清空输入缓冲区的内容,下面的getchar就会获取不确定的内容

最后通过||(逻辑或)判断是否继续输入,如果输入的是 'y' 或者 'Y' 都将继续进行循环输入匹配

猜你喜欢

转载自blog.csdn.net/qq_31243065/article/details/82659669
今日推荐