掘根宝典之C语言if,switch,break,continue,逻辑运算符(||,,!),?:运算符

if语句

C语言中的if语句用于执行给定条件下的一部分代码。

if语句的语法如下:

if (condition) {// code to be executed if condition is true
}

在这里,condition是一个表达式,如果为真,则执行if语句块中的代码。如果条件为假,则跳过if语句块中的代码。

下面是一个使用if语句的示例:

#include <stdio.h>int main() {int num = 10;if (num > 0) {printf("The number is positive.\n");}return 0;
}

在这个示例中,如果变量num的值大于0,则打印出"The number is positive."。否则,什么也不做。

else语句

else语句用于在if语句的条件为假时执行特定的代码块。

else必须与if配对使用

以下是else语句的一般语法:

if (condition) {// code to be executed if condition is true
} else {// code to be executed if condition is false
}

在这里,如果条件为真,则执行if语句块中的代码。如果条件为假,则执行else语句块中的代码。

下面是一个使用else语句的示例:

#include <stdio.h>int main() {int num = 5;if (num % 2 == 0) {printf("The number is even.\n");} else {printf("The number is odd.\n");}return 0;
}

在这个示例中,如果变量num能够被2整除,则打印出"The number is even."。否则,打印出"The number is odd."。

注意,else语句不需要条件,它只会在前面的if语句的条件为假时执行。

else if语句

else if语句可以用来在if语句的条件为假时检查多个条件,并根据这些条件执行特定的代码块。else if语句可以与if语句和else语句一起使用,以处理多个可能的情况。

以下是else if语句的一般语法:

if (condition1) {// code to be executed if condition1 is true
} else if (condition2) {// code to be executed if condition2 is true
} else if (condition3) {// code to be executed if condition3 is true
} else {// code to be executed if all conditions are false
}

在这里,首先判断condition1的值,如果为真,则执行相应的代码块。如果condition1为假,则继续判断condition2的值,以此类推。如果所有条件都为假,则执行else语句块中的代码。

下面是一个使用else if语句的示例:

#include <stdio.h>int main() {int num = 75;if (num >= 90) {printf("Grade A\n");} else if (num >= 80) {printf("Grade B\n");} else if (num >= 70) {printf("Grade C\n");} else if (num >= 60) {printf("Grade D\n");} else {printf("Grade F\n");}return 0;
}

在这个示例中,根据变量num的值,打印出相应的成绩等级。如果num大于等于90,则打印出"Grade A";如果大于等于80,则打印出"Grade B";以此类推,如果所有条件都不满足,则打印出"Grade F"。

注意,else if语句可以有多个,并且可以根据需要添加更多的条件和代码块。

switch语句

switch语句是一种用于根据不同的情况执行不同代码块的流控制语句。它可以替代多个if-else if语句的使用,在某些情况下更加简洁和有效。

以下是switch语句的一般语法:

switch (expression) {case constant1:// code to be executed if expression is equal to constant1break;case constant2:// code to be executed if expression is equal to constant2break;case constant3:// code to be executed if expression is equal to constant3break;// more cases can be added as neededdefault:// code to be executed if none of the constants match expression
}

在这里,switch语句会将表达式(expression)的值与每个case的常量进行比较。

如果找到了匹配的常量,将执行对应的代码块,并使用break语句终止switch语句的执行。

如果没有找到匹配的常量,则执行default代码块(可选)。

下面是一个使用switch语句的示例:

#include <stdio.h>int main() {int choice;printf("Enter a number between 1 and 5: ");scanf("%d", &choice);switch (choice) {case 1:printf("You entered 1.\n");break;case 2:printf("You entered 2.\n");break;case 3:printf("You entered 3.\n");break;case 4:case 5:printf("You entered 4 or 5.\n");break;default:printf("Invalid choice.\n");}return 0;
}

在这个示例中,根据用户输入的数字,打印出相应的消息。如果输入的数字是1,则打印"You entered 1.",如果是2,则打印"You entered 2.",以此类推。如果输入的数字是4或5,则打印"You entered 4 or 5."。如果输入的数字不在1到5之间,则打印"Invalid choice."。

注意点

在使用switch语句时,需要注意以下几点:

  1. 表达式必须是一个整型或字符型的值。这意味着不能使用浮点数、指针、结构体等类型的值作为switch语句的表达式。

  2. 每个case后面的常量必须是唯一的,不能有重复的值。如果出现重复的常量,编译器会报错。

  3. 在每个case代码块的末尾需要使用break语句来终止该代码块的执行。如果没有break语句,程序将会继续执行下一个case中的代码块,这可能导致意想不到的结果。如果有多个相邻的case需要执行相同的代码块,可以不使用break语句,让流程直接进入下一个case继续执行。

  4. 可以有一个可选的default代码块,用于处理没有匹配的情况。default代码块不是必需的,但在某些情况下可以提供一个默认的处理逻辑。

  5. switch语句的花括号{}是必需的,即使在只有一个case的情况下也不能省略。每个case语句块内部也需要使用花括号,即使代码块只有一行也需要使用。

  6. case后面的常量可以是常量表达式或字面值,但不能是变量。这意味着不能使用变量作为case后面的常量。

  7. switch语句可以嵌套在其他的switch语句中,但要注意代码的可读性和维护性。

总之,使用switch语句时要确保表达式的类型是整型或字符型,每个case的常量唯一且不重复,每个case代码块末尾使用break语句终止执行,可以选择使用default代码块来处理没有匹配的情况。

逻辑运算符

||

在C语言中,||是逻辑或(or)运算符,用于判断条件语句中的多个条件之一是否为真。

它的语法形式是:

expression1 || expression2

其中,expression1和expression2是两个要进行逻辑或运算的表达式,可以是任意布尔表达式。

逻辑或运算规则如下:

  1. 如果expression1为真(非零),则整个逻辑表达式的结果为真,不会再计算expression2,直接返回真。
  2. 如果expression1为假(零),则继续计算expression2,如果expression2为真,则整个逻辑表达式的结果为真,否则为假。

逻辑或运算是一个短路运算,即当expression1的结果为真时,整个表达式的结果已经确定为真,不会再计算expression2。

下面是一个简单的示例:

int a = 5;
int b = 10;
int c = 15;if (a > 10 || b < 20) {printf("At least one condition is true.\n");
}if (a > 10 || b > 20) {printf("At least one condition is true.\n");
}if (a < 10 || c < 20) {printf("At least one condition is true.\n");
}

在第一个if语句中,a > 10的条件为假,但b < 20的条件为真,因此整个逻辑表达式的结果为真,会输出"At least one condition is true."。

在第二个if语句中,a > 10的条件为假,b > 20的条件也为假,因此整个逻辑表达式的结果为假,不会输出任何内容。

在第三个if语句中,a < 10的条件为真,因此整个逻辑表达式的结果为真,会输出"At least one condition is true."。

&&

在C语言中,&&是逻辑与(and)运算符,用于判断条件语句中的多个条件是否都为真。

它的语法形式是:

expression1 && expression2

其中,expression1和expression2是要进行逻辑与运算的表达式,可以是任意布尔表达式。

逻辑与运算规则如下:

  1. 如果expression1为假(零),则整个逻辑表达式的结果为假,不会再计算expression2,直接返回假。
  2. 如果expression1为真(非零),则继续计算expression2,如果expression2为真,则整个逻辑表达式的结果为真,否则为假。

逻辑与运算也是一个短路运算,即当expression1的结果为假时,整个表达式的结果已经确定为假,不会再计算expression2。

下面是一个简单的示例:

int a = 5;
int b = 10;
int c = 15;if (a > 0 && b < 20) {printf("Both conditions are true.\n");
}if (a > 0 && b > 20) {printf("Both conditions are true.\n");
}if (a < 0 && c < 20) {printf("Both conditions are true.\n");
}

在第一个if语句中,a > 0的条件为真,且b < 20的条件也为真,因此整个逻辑表达式的结果为真,会输出"Both conditions are true."。

在第二个if语句中,a > 0的条件为真,但b > 20的条件为假,因此整个逻辑表达式的结果为假,不会输出任何内容。

在第三个if语句中,a < 0的条件为假,因此整个逻辑表达式的结果为假,不会输出任何内容。

在C语言中,!是逻辑非(not)运算符,用于对一个布尔表达式的结果进行取反。

它的语法形式是:

!expression

其中,expression是要进行取反操作的布尔表达式。

逻辑非运算规则如下:

  1. 如果expression为真(非零),则逻辑非运算的结果为假(0)。
  2. 如果expression为假(零),则逻辑非运算的结果为真(非零)

逻辑非运算可以用于翻转一个布尔表达式的结果。下面是一个简单的示例:

int a = 5;
int b = 10;if (!(a > 0)) {printf("a is not greater than 0.\n");
}if (!(b < 20)) {printf("b is not less than 20.\n");
}

在第一个if语句中,a > 0的条件为真,但是在其前面加上逻辑非运算符!,将其结果取反,变为假,因此不会输出任何内容。

在第二个if语句中,b < 20的条件为真,但是在其前面加上逻辑非运算符!,将其结果取反,变为假,因此不会输出任何内容。

逻辑非运算符也可以用于翻转非布尔类型的表达式的值。非零的整数经过逻辑非运算后变为0,零经过逻辑非运算后变为非零的整数。例如:

int a = 5;
int b = 0;int result1 = !a;  // result1的值为0
int result2 = !b;  // result2的值为1

条件运算符:?:

在C语言中,?:是条件运算符(ternary operator),也称为三元运算符。它提供了一种根据条件选择不同值的简洁方式。

它的语法形式是:

condition ? expression1 : expression2

其中,condition是一个布尔表达式,如果为真,则整个表达式的结果为expression1,否则,则结果为expression2。

条件运算符的运算规则如下:

  1. 如果condition为真(非零),则整个表达式的结果为expression1。
  2. 如果condition为假(零),则整个表达式的结果为expression2。

下面是一个示例:

int a = 5;
int b = 10;
int max;max = (a > b) ? a : b;printf("The maximum number is %d\n", max);

上述代码中,比较a和b的大小,如果a大于b,则将max的值设为a,否则将max的值设为b。然后通过printf函数输出max的值。

需要注意的是,条件运算符可以嵌套使用,例如:

int a = 5;
int b = 10;
int c = 15;
int max;max = (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c);printf("The maximum number is %d\n", max);

上述代码中,首先比较a和b的大小,如果a大于b,则进一步比较a和c的大小;否则,进一步比较b和c的大小。最终得到最大的数,并通过printf函数输出。

continue

在C语言中,continue是一种流程控制语句,用于在循环语句中跳过当前迭代中的剩余代码,并开始下一次循环迭代。

continue语句的作用是立即结束当前循环的迭代,然后跳转到循环结构的控制条件进行下一次迭代。它通常用于条件循环(如for循环和while循环)中,用于提前结束本次迭代并跳过剩余的循环代码。

下面是一个示例,使用continue语句来跳过奇数的输出:

#include <stdio.h>int main() {int i;for (i = 1; i <= 10; i++) {if (i % 2 == 1) {continue; // 如果 i 是奇数,跳过该迭代}printf("%d ", i);}return 0;
}

上述代码中,for循环用于迭代变量i从1到10。在每次迭代中,使用if条件判断i是否为奇数,如果是奇数,则执行continue语句,跳过剩余的循环代码,直接进行下一次迭代。如果i是偶数,则输出其值。因此,上述代码的输出结果是 2 4 6 8 10。

需要注意的是,在使用continue语句时,确保循环的控制变量在continue语句之前更新,以避免造成死循环。

break

在C语言中,break是一种流程控制语句,用于提前结束循环语句(如for循环、while循环和do while循环)或switch语句。

break语句的作用是立即跳出当前的循环或switch语句,继续执行紧接着的语句。当执行到break语句时,程序会跳出当前循环或switch语句,不再执行循环条件判断或switch选择分支的后续代码。

下面是一个示例,使用break语句在循环中提前结束:

#include <stdio.h>int main() {int i;for (i = 1; i <= 10; i++) {if (i == 5) {break; // 当 i 等于 5 时,跳出循环}printf("%d ", i);}return 0;
}

上述代码中,for循环用于迭代变量i从1到10。在每次迭代中,使用if条件判断i是否等于5,如果是,则执行break语句,跳出循环。因此,上述代码的输出结果是 1 2 3 4。注意,当i等于5时,break语句被执行,跳出循环,不再执行后续的printf语句。

另外,break语句也可以用于提前结束switch语句的执行。当满足某个case分支条件后,使用break语句跳出switch语句,避免执行其他的case分支。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/722306.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥集训之重新排序

蓝桥集训之重新排序 核心思想&#xff1a;差分 利用差分 在一段区间内 最终求和得到每个位置数计算的次数然后分别从大到小排序w[i]和s[i]数组 #include<iostream>#include<algorithm>using namespace std;typedef long long LL;const int N 100010;int w[N],s…

Python并发编程:协程-gevent模块

一 gevent模块 Gevent是一个第三方库&#xff0c;可以轻松通过gevent实现并发同步或异步编程。在gevent中用到的主要模式是Greenlet&#xff0c;它是以C扩展模块形式接入Python的轻量级协程。Greenlet 全部运行在主程序操作系统进程的内部&#xff0c;但它们被协作式地调度。 …

Stable Diffusion ———LDM、SD 1.0, 1.5, 2.0、SDXL、SDXL-Turbo等版本之间关系现原理详解

前言 2021年5月&#xff0c;OpenAI发表了《扩散模型超越GANs》的文章&#xff0c;标志着扩散模型&#xff08;Diffusion Models&#xff0c;DM&#xff09;在图像生成领域开始超越传统的GAN模型&#xff0c;进一步推动了DM的应用。 然而&#xff0c;早期的DM直接作用于像素空…

cmd模式下启动mysql

1.打开cmd输入services.msc&#xff0c;找到MYSQL&#xff0c;右击属性&#xff0c;找到可执行文件路径&#xff0c;加载到环境变量。 2.打开cmd&#xff0c;启动MYSQL&#xff1a;输入net start mysql; 3.登陆MYSQL&#xff0c;需要管理权限&#xff1b; 输入&#xff1a;my…

HALCON 快速入门手册

HALCON 快速入门手册 1 什么是 HALCON HALCON 是德国 MVtec 公司开发的一套完善的标准的机器视觉算法包&#xff0c;拥有应用广泛 的机器视觉集成开发环境。它节约了产品成本&#xff0c;缩短了软件开发周期——HALCON 灵活的 架构便于机器视觉&#xff0c;医学图像和图像分析应…

Docker容器化解决方案

什么是Docker&#xff1f; Docker是一个构建在LXC之上&#xff0c;基于进程容器的轻量级VM解决方案&#xff0c;实现了一种应用程序级别的资源隔离及配额。Docker起源于PaaS提供商dotCloud 基于go语言开发&#xff0c;遵从Apache2.0开源协议。 Docker 自开源后受到广泛的关注和…

数据链路层----滑动窗口协议的相关计算

目录 1.窗口大小的相关计算 •停等协议&#xff1a; •后退N帧协议&#xff1a; •选择重传协议&#xff1a; 2.信道利用率相关计算 •停等协议的信道利用率&#xff1a; •连续ARQ&#xff08;后退N帧协议&#xff0c;选择重传协议&#xff09;的信道利用率&#xff1a;…

工具函数模板题(蓝桥杯 C++ 代码 注解)

目录 一、Vector容器&#xff1a; 二、Queue队列 三、Map映射 四、题目&#xff08;快递分拣 vector&#xff09;&#xff1a; 代码&#xff1a; 五、题目&#xff08;CLZ银行问题 queue&#xff09;&#xff1a; 代码&#xff1a; 六、题目&#xff08;费里的语言 map&…

每日学习总结20240301

20240301 1. strchr VS strrchr strchr和strrchr是C语言标准库中的字符串处理函数&#xff0c;用于在字符串中查找特定字符的位置。 1.1 strchr函数 strchr函数用于在字符串中查找第一次出现指定字符的位置&#xff0c;并返回该位置的指针。函数原型如下&#xff1a; char…

你都了解2024程序员拿捏高薪的新方式吗?

2024年&#xff0c;程序员该如何拿高薪呢&#xff1f; 道理是这么讲&#xff0c;那我们到底应该如何去践行呢&#xff1f;以我自身的经验来看&#xff0c;网络接单无疑是我们程序员来钱最快的方式&#xff0c;既可以做到兼顾本职工作和快点搞钱&#xff0c;又可以充分利用好每一…

云解析的高防DNS技术有哪些优势和作用?(国科云)

云解析作为一种更加智能安全的解析技术&#xff0c;开始替代传统解析技术&#xff0c;受到越来越多政府机关和企业的关注和信赖。相比传统解析技术&#xff0c;云解析具备智能解析、健康监测、全局流量管理等技术优点&#xff0c;有效提升DNS解析的效率和精度&#xff0c;而其所…

rearrangement-challenge-2022环境使用学习(一)

搭建了rearrangement-challenge-2022的环境&#xff1a; https://github.com/facebookresearch/habitat-challenge/tree/rearrangement-challenge-2022 habitat最大的缺点是对不同的版本非常的敏感。本文只是针对rearrangement-challenge-2022的学习。 文档一开始会很不完善&a…

信息安全系列04-安全启动介绍

本文框架 1. 基本概念1.1 基本概念回顾1.2 数字签名及验签流程 2. 安全启动实施2.1 信任根选择2.1.1 使用HSM作为信任根2.1.2 使用最底层Bootloader作为信任根 2.2 校验方法确认2.2.1 基于非对称加密算法&#xff08;数字签名&#xff09;2.2.2 基于对称加密算法 2.3 安全启动方…

llvm AST consumer 示例

示例源码 Makefile LLVM_CONFIG ? llvm-config #CXX : clang ifndef VERBOSE QUIET : endifSRC_DIR ? $(PWD) LDFLAGS $(shell $(LLVM_CONFIG) --ldflags) COMMON_FLAGS -Wall -Wextra CXXFLAGS $(COMMON_FLAGS) $(shell $(LLVM_CONFIG) --cxxflags) LCXX :$(shell $(L…

前端面试题 ===> 【JavaScript - 高级】

公众号&#xff1a;需要以下pdf&#xff0c;关注下方 2023已经过完了&#xff0c;让我们来把今年的面试题统计号&#xff0c;来备战今年的金三银四&#xff01;所以&#xff0c;不管你是社招还是校招&#xff0c;下面这份前端面试工程师高频面试题&#xff0c;请收好。 JavaScr…

【MGR】MySQL Group Replication 中文官方文档

MySQL 组复制官方文档翻译 背景&#xff1a; 由于中文版的官方文档应该是通过谷歌翻译直接进行翻译&#xff0c;读起来晦涩难懂&#xff0c;刚好最近在调研MGR&#xff0c;所以对官方文档进行了翻译&#xff0c;翻译版本是5.7。 翻译的英文官方文档&#xff1a; Chapter 17 …

百度AI千帆大模型示例代码 GO语言版

前端&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Sample</title> </head> <body><label for"textInput">Prompt&#xff1a;</label><i…

Kubernetes基础(二十七)-nodePort/targetPort/port/containerPort/hostPort

1 nodePort/targetPort/port/containerPort 1.1 实现层级 1.2 配置方式 ########service########### apiVersion: v1 kind: Service metadata: labels: name: app1 name: app1 namespace: default spec: type: NodePort ports: - <strong>port: 8080 t…

基于C#开发OPC DA客户端——搭建KEPServerEX服务

简介 OPC DA (OLE for Process Control Data Access) 是一种工业自动化领域中的通信协议标准&#xff0c;它定义了应用程序如何访问由OPC服务器提供的过程控制数据。OPC DA标准允许软件应用程序&#xff08;客户端&#xff09;从OPC服务器读取实时数据或向服务器写入数据&…

python:pyecharts 画基金净值 月K线图

pip install pyecharts1.9.1 pyecharts-1.9.1-py3-none-any.whl 我想在本地&#xff08;PC) 画出 基金净值 月K线图&#xff0c;不想每次看图都需联网。 cd my_dir mkdir echarts cd echarts curl -O https://assets.pyecharts.org/assets/echarts.min.js 修改一下开源代码 …