10.22学习

ops/2024/10/24 12:23:48/

1.求余

在C语言中,求余操作是通过取模运算符  %  来实现的。取模运算符会返回两个数相除后的余数。对于正数和负数的除法,求余的结果会有所不同,但  %  运算符总是返回被除数的符号。

下面是一个简单的例子,展示如何使用  %  运算符来求一个数除以另一个数的余数:

#include <stdio.h>

int main() {

int dividend = 153456; // 被除数

int divisor = 10000; // 除数,假设我们要得到万位的余数

 

int remainder = dividend % divisor; // 求余数

 

printf("余数是:%d\n", remainder);

 

return 0;

}

在这个例子中, 153456 % 10000  会计算 153456 除以 10000 的余数,结果是 5456。这意味着 153456 除以 10000 后,余下 5456。

如果你想获取一个数的万位数字,你可以这样做:

#include <stdio.h>

int main() {

int number = 153456; // 假设我们要处理的数字是153456

 

// 首先确保数字是正数

if (number < 0) {

number = -number;

}

 

// 然后通过连续除以10的幂来获取万位数字

int tenThousand = number / 10000; // 获取万位数字

 

printf("万位数字是:%d\n", tenThousand);

 

return 0;

}

在这个例子中,我们通过将数字除以  10000  来获取万位数字。这种方法适用于获取任何位数的数字,只需要将数字除以相应的10的幂即可。例如,要获取千位数字,可以将数字除以  1000 ;要获取百位数字,可以将数字除以  100 ,以此类推。

 

2.复合赋值运算符

在C语言中,复合赋值运算符是一种将赋值和另一个运算结合在一起的运算符。它们提供了一种简洁的方式来更新变量的值。复合赋值运算符包括:

1.  += :将右侧的值加到左侧变量的当前值上,并将结果赋值给左侧变量。

2.  -= :将右侧的值从左侧变量的当前值中减去,并将结果赋值给左侧变量。

3.  *= :将左侧变量的当前值与右侧的值相乘,并将结果赋值给左侧变量。

4.  /= :将左侧变量的当前值除以右侧的值,并将结果赋值给左侧变量。

5.  %= :将左侧变量的当前值除以右侧的值,并取余数,将结果赋值给左侧变量。

6.  <<= :将左侧变量的当前值左移右侧指定的位数,并将结果赋值给左侧变量。

7.  >>= :将左侧变量的当前值右移右侧指定的位数,并将结果赋值给左侧变量。

8.  &= :对左侧变量的当前值和右侧的值进行按位与操作,并将结果赋值给左侧变量。

9.  ^= :对左侧变量的当前值和右侧的值进行按位异或操作,并将结果赋值给左侧变量。

10.  |= :对左侧变量的当前值和右侧的值进行按位或操作,并将结果赋值给左侧变量。

复合赋值运算符的一般形式是: 变量 op= 表达式 ,其中  op  是上述运算符之一。

例如,假设我们有一个变量  a ,其初始值为10,我们想将其增加5,可以使用  +=  运算符:

int a = 10;

a += 5; // 等同于 a = a + 5;

printf("%d\n", a); // 输出 15

复合赋值运算符的用途在于简化代码,使得代码更加简洁和易于阅读。它们在循环和条件语句中特别有用,因为它们可以减少代码的复杂性,并且可以提高代码的执行效率,因为它们通常只需要一次操作而不是两次(一次赋值和一次运算)。

 

3.增一和减一运算符

在C语言中,增一( ++ )和减一( -- )运算符用于将变量的值增加1或减少1。这两个运算符可以作为前缀(prefix)或后缀(suffix)使用,区别在于它们对变量值的修改时机以及表达式的结果值。

增一运算符( ++ )

1. 前缀形式( ++var ):在使用变量的值之前先将其增加1。

表达式的值是增加后的变量值。

变量的值在使用之前就被增加了。

2. 后缀形式( var++ ):在使用变量的值之后将其增加1。

表达式的值是增加前的变量值。

变量的值在使用之后才被增加。

减一运算符( -- )

1. 前缀形式( -var ):在使用变量的值之前先将其减少1。

表达式的值是减少后的变量值。

变量的值在使用之前就被减少了。

2. 后缀形式( var-- ):在使用变量的值之后将其减少1。

表达式的值是减少前的变量值。

变量的值在使用之后才被减少。

示例

#include <stdio.h>

 

int main() {

int a = 5;

int b = 5;

 

// 前缀形式的增一运算符

printf("前缀形式:%d\n", ++a); // 输出 6,a 的值变为 6

 

// 后缀形式的增一运算符

printf("后缀形式:%d\n", b++); // 输出 5,b 的值在表达式求值后变为 6

 

// 前缀形式的减一运算符

printf("前缀形式:%d\n", --a); // 输出 5,a 的值变为 5

 

// 后缀形式的减一运算符

printf("后缀形式:%d\n", a--); // 输出 5,a 的值在表达式求值后变为 4

 

return 0;

}

在实际编程中,选择前缀还是后缀形式取决于你的具体需求。如果你需要在操作之前使用新的值,使用前缀形式;如果你需要在操作之前使用旧的值,使用后缀形式。此外,前缀形式通常在性能上更优,因为它们不需要额外的内存来存储变量的旧值。

 

4.算术运算符

在C语言中,增一( ++ )和减一( -- )运算符用于将变量的值增加1或减少1。这两个运算符可以作为前缀(prefix)或后缀(suffix)使用,区别在于它们对变量值的修改时机以及表达式的结果值。

增一运算符( ++ )

1. 前缀形式( ++var ):在使用变量的值之前先将其增加1。

表达式的值是增加后的变量值。

变量的值在使用之前就被增加了。

2. 后缀形式( var++ ):在使用变量的值之后将其增加1。

表达式的值是增加前的变量值。

变量的值在使用之后才被增加。

减一运算符( -- )

1. 前缀形式( -var ):在使用变量的值之前先将其减少1。

表达式的值是减少后的变量值。

变量的值在使用之前就被减少了。

2. 后缀形式( var-- ):在使用变量的值之后将其减少1。

表达式的值是减少前的变量值。

变量的值在使用之后才被减少。

示例

#include <stdio.h>

 

int main() {

int a = 5;

int b = 5;

 

// 前缀形式的增一运算符

printf("前缀形式:%d\n", ++a); // 输出 6,a 的值变为 6

 

// 后缀形式的增一运算符

printf("后缀形式:%d\n", b++); // 输出 5,b 的值在表达式求值后变为 6

 

// 前缀形式的减一运算符

printf("前缀形式:%d\n", --a); // 输出 5,a 的值变为 5

 

// 后缀形式的减一运算符

printf("后缀形式:%d\n", a--); // 输出 5,a 的值在表达式求值后变为 4

 

return 0;

}

在实际编程中,选择前缀还是后缀形式取决于你的具体需求。如果你需要在操作之前使用新的值,使用前缀形式;如果你需要在操作之前使用旧的值,使用后缀形式。此外,前缀形式通常在性能上更优,因为它们不需要额外的内存来存储变量的旧值。


http://www.ppmy.cn/ops/127701.html

相关文章

KubeSphere

初始密码 Account: admin Password: P88w0rd ansible部署 选一台master 节点 --- - hosts: k8s_mastersbecome: yestasks:- name: Install Gitpackage:name: gitstate: present- name: Download Helmget_url:url: https://get.helm.sh/helm-v3.16.2-linux-amd64.tar.gzdest: …

ansible————task控制

一、loop循环 当某一个操作需要多次执行的时候&#xff0c;就需要用到循环 1、循环语句 安装多个安装包&#xff0c;启动多个应用 [rootcontrol ansible_manage]# cat play_book/loop.yaml --- - name: loop exercisehosts: manage1vars_files:- var/loop_var.yamltasks:-…

深入理解计算机系统阅读笔记-第十章

第十章 虚拟存储器 虚拟存储器是硬件异常、硬件地址翻译、主存、磁盘文件和内核软件的完美交互&#xff0c;它为每个进程提供了一个大的、一致的、私有地址空间。通过一个很清晰的机制&#xff0c;虚拟存储器 提供了三个重要能力&#xff1a; 1、它将主存看成是一个存储在磁盘…

【数据结构与算法】走进数据结构的“时间胶囊”——栈

大家好&#xff0c;我是小卡皮巴拉 文章目录 目录 引言 一.栈的基本概念 1.1 定义 1.2 特性 1.3 基本操作 二.栈的实现方式 2.1 顺序栈 2.2 链栈 三.顺序栈的实现 定义顺序栈的结构 初始化 入栈 检查栈是否为空 出栈 销毁 四.链栈的实现 定义链栈的结构 初始…

如何给SaaS应用做安全

SaaS&#xff08;软件即服务&#xff09;应用在过去几年中得到了迅速发展。截至2023年&#xff0c;全球已有超过30,000家SaaS初创公司。SaaS应用程序已成为无数行业在线业务的重要组成部分和首要选择。凭借着简化的流程&#xff0c;便捷的交付和可扩展性&#xff0c;越来越多的…

JavaEE----多线程(二)

文章目录 1.进程的状态2.线程的安全引入3.线程安全的问题产生原因4.synchronized关键字的引入4.1修饰代码块4.2修饰实例方法4.3修饰静态方法4.4对象头介绍4.5死锁-可重入的特性 5.关于死锁的分析总结5.1死锁的分析5.2死锁成因的必要条件5.3死锁的解决方案 1.进程的状态 public…

Golang笔记_day10

Go面试题&#xff08;三&#xff09; 1、什么是channel&#xff0c;为什么它可以做到线程安全 在Go语言中&#xff0c;channel是一种类型&#xff0c;它可以用来在协程之间传递数据通过共享内存来通信&#xff1a; 通过共享内存来通信是指多个线程或进程直接访问相同的内存区域…

【数据结构与算法】之有序链表去重(保留重复元素)

目录 1.问题描述 2.思路讲解 3.Java 代码实现 4.代码解释 5.复杂度分析 6.其它方法 6.1 递归实现 6.2 双指针 7.总结 相关教程&#xff1a; 有序链表去重&#xff08;不保留重复元素&#xff09; 数据结构之链表详解 递归详解 1.问题描述 给定一个已排序的单链表…