交换变量(不能使用第3个变量) - 品茗股份c++笔试题

简介: 交换变量(不能使用第3个变量) - 品茗股份c++笔试题


/***********************************************************************

目的:不能创建临时变量(第3个变量),实现2个数的交换

分析:

▶ 借助2数之和与变量的运算:

▶ 使用异或’^’:

平台:Visual studio 2017 && windows

*************************************************************************/

📝 实现代码1:

#include<stdio.h>
int main()
{
  int a = 3;
  int b = 5;
  printf(a = %d b = %d\n", a, b);//3 5
  a = a + b;
  b = a - b;
  a = a - b;
  printf(a = %d b = %d\n", a, b);//5 3
  return 0;
}

这种写法是有问题的:当这2个数足够大时,相加可能会造成数值溢出

📝 实现代码2:

#include<stdio.h>
int main()
{
  int a = 3;
  int b = 5;
  printf("a = %d b = %d\n", a, b);//3 5
  a = a ^ b;//以下的括号没有任何意义
  b = a ^ b;//(a ^ b) ^ b -> a
  a = a ^ b;//(a ^ b) ^ ((a ^ b) ^ b) -> b
  printf(a = %d b = %d\n", a, b);//5 3
  return 0;
}


相关文章
|
28天前
|
存储 C++
C++语言中指针变量int和取值操作ptr详细说明。
总结起来,在 C++ 中正确理解和运用 int 类型地址及其相关取值、设定等操纵至关重要且基础性强:定义 int 类型 pointer 需加星号;初始化 pointer 需配合 & 取址;读写 pointer 执向之处需配合 * 解引用操纵进行。
142 12
|
11月前
|
C语言 C++
实现两个变量值的互换[C语言和C++的区别]
实现两个变量值的互换[C语言和C++的区别]
129 0
|
存储 安全 C++
C++:指针引用普通变量适用场景
指针和引用都是C++提供的强大工具,它们在不同的场景下发挥着不可或缺的作用。了解两者的特点及适用场景,可以帮助开发者编写出更加高效、可读性更强的代码。在实际开发中,合理选择使用指针或引用是提高编程技巧的关键。
128 1
|
JavaScript 前端开发 Java
通过Gtest访问C++静态、私有、保护变量和方法
通过Gtest访问C++静态、私有、保护变量和方法
290 0
|
安全 C++
C++一分钟之-互斥锁与条件变量
【6月更文挑战第26天】在C++并发编程中,`std::mutex`提供互斥访问,防止数据竞争,而`std::condition_variable`用于线程间的同步协调。通过`lock_guard`和`unique_lock`防止忘记解锁,避免死锁。条件变量需配合锁使用,确保在正确条件下唤醒线程,注意虚假唤醒和无条件通知。生产者-消费者模型展示了它们的应用。正确使用这些工具能解决同步问题,提升并发性能和可靠性。
183 4
|
存储 C++ 容器
C++一分钟之-变量与数据类型入门
【6月更文挑战第18天】**C++编程基础:变量与数据类型概览** 了解变量(存储数据的容器)和数据类型是编程入门的关键。声明变量如`int age = 25;`,注意初始化和类型匹配。基本数据类型包括整型(int等)、浮点型(float、double)、字符型(char)和布尔型(bool)。理解类型范围和精度,使用字面量后缀增强可读性。深入学习数组、指针、结构体和类,以及动态内存管理,避免数组越界和内存泄漏。不断实践以巩固理论知识。
115 1
|
程序员 编译器 C++
探索C++语言宝库:解锁基础知识与实用技能(类型变量+条件循环+函数模块+OOP+异常处理)
探索C++语言宝库:解锁基础知识与实用技能(类型变量+条件循环+函数模块+OOP+异常处理)
88 0
|
算法 C++ 容器
C++之vector容器操作(构造、赋值、扩容、插入、删除、交换、预留空间、遍历)
C++之vector容器操作(构造、赋值、扩容、插入、删除、交换、预留空间、遍历)
798 0
C++之变量与常量
C++之变量与常量
|
程序员 C语言 C++
C语言学习记录——动态内存习题(经典的笔试题)、C/C++中程序内存区域划分
C语言学习记录——动态内存习题(经典的笔试题)、C/C++中程序内存区域划分
173 0